CodeTypeMemberInfo.cs :  » Development » devAdvantage » AnticipatingMinds » Genesis » CodeDOM » C# / CSharp Open Source

Home
C# / CSharp Open Source
1.2.6.4 mono .net core
2.2.6.4 mono core
3.Aspect Oriented Frameworks
4.Bloggers
5.Build Systems
6.Business Application
7.Charting Reporting Tools
8.Chat Servers
9.Code Coverage Tools
10.Content Management Systems CMS
11.CRM ERP
12.Database
13.Development
14.Email
15.Forum
16.Game
17.GIS
18.GUI
19.IDEs
20.Installers Generators
21.Inversion of Control Dependency Injection
22.Issue Tracking
23.Logging Tools
24.Message
25.Mobile
26.Network Clients
27.Network Servers
28.Office
29.PDF
30.Persistence Frameworks
31.Portals
32.Profilers
33.Project Management
34.RSS RDF
35.Rule Engines
36.Script
37.Search Engines
38.Sound Audio
39.Source Control
40.SQL Clients
41.Template Engines
42.Testing
43.UML
44.Web Frameworks
45.Web Service
46.Web Testing
47.Wiki Engines
48.Windows Presentation Foundation
49.Workflows
50.XML Parsers
C# / C Sharp
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source » Development » devAdvantage 
devAdvantage » AnticipatingMinds » Genesis » CodeDOM » CodeTypeMemberInfo.cs
using System;
using System.Collections.Specialized;
using System.Reflection;
using URAnticipatingMinds.PlatformServices.UnmanagedReflection;

namespace AnticipatingMinds.Genesis.CodeDOM{
  /// <summary>
  /// Summary description for CodeTypeMemberInfo.
  /// </summary>
  [Serializable]
  public abstract class CodeTypeMemberInfo
  {
    /// <summary>
    /// Initializes new instance of the <see cref="CodeTypeMemberInfo"/> class.
    /// </summary>
    /// <param name="declaringTypeInfo">Declaring type information.</param>
    protected CodeTypeMemberInfo(CodeTypeInfo declaringTypeInfo)
    {
      this.declaringTypeInfo = declaringTypeInfo;
    }

    /// <summary>
    /// Gets declaring type.
    /// </summary>
    public CodeTypeInfo DeclaringTypeInfo
    {
      get
      {
        return declaringTypeInfo;
      }
    }

    /// <summary>
    /// Gets member name.
    /// </summary>
    public abstract string Name
    {
      get;
    }

    /// <summary>
    /// True if member is static.
    /// </summary>
    public abstract bool IsStatic
    {
      get;
    }

    private CodeTypeInfo declaringTypeInfo;
  }

  /// <summary>
  /// Represents method information.
  /// </summary>
  [Serializable]
  public abstract class CodeMethodInfo : CodeTypeMemberInfo
  {
    /// <summary>
    /// Initializes new instance of the <see cref="CodeMethodInfo"/> class.
    /// </summary>
    /// <param name="declaringTypeInfo">Declaring type information.</param>
    protected CodeMethodInfo(CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
    }

    /// <summary>
    /// Gets the full name of the method return type.
    /// </summary>
    public abstract string ReturnType
    {
      get;
    }

    /// <summary>
    /// Gets an array of method arguments.
    /// </summary>
    /// <returns>An array of method arguments.</returns>
    public abstract CodeParameterInfo[] GetParameters();
  }
  
  /// <summary>
  /// Represents property information.
  /// </summary>
  [Serializable]
  public abstract class CodePropertyInfo : CodeTypeMemberInfo
  {
    /// <summary>
    /// Initializes new instance of the <see cref="CodePropertyInfo"/> class.
    /// </summary>
    /// <param name="declaringTypeInfo">Declaring type information.</param>
    protected CodePropertyInfo(CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
    }

    /// <summary>
    /// Gets the full name of property type.
    /// </summary>
    public abstract string PropertyType
    {
      get;
    }

    /// <summary>
    /// Gets an array of indexer parameters if property is an indexer.
    /// </summary>
    /// <returns>If property is an indexer - an array of indexer parameters.</returns>
    public abstract CodeParameterInfo[] GetIndexParameters();
  }
  
  /// <summary>
  /// Represents field information.
  /// </summary>
  [Serializable]
  public abstract class CodeFieldInfo : CodeTypeMemberInfo
  {
    /// <summary>
    /// Initializes new instance of the <see cref="CodeFieldInfo"/> class.
    /// </summary>
    /// <param name="declaringTypeInfo">Declaring type information.</param>
    protected CodeFieldInfo(CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
    }

    /// <summary>
    /// Gets full name of the field type.
    /// </summary>
    public abstract string FieldType
    {
      get;
    }


    /// <summary>
    /// Returns true if declared field is constant
    /// </summary>
    public abstract bool IsConst
    {
      get;
    }
  }
  
  /// <summary>
  /// Represents event information.
  /// </summary>
  [Serializable]
  public abstract class CodeEventInfo : CodeTypeMemberInfo
  {
    /// <summary>
    /// Initializes new instance of the <see cref="CodeEventInfo"/> class.
    /// </summary>
    /// <param name="declaringTypeInfo">Declaring type information.</param>
    protected CodeEventInfo(CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
    }

    /// <summary>
    /// Gets full name of the event handler type.
    /// </summary>
    public abstract string EventHandlerType
    {
      get;
    }
  }

  [Serializable]
  internal class CodeMetadataMethodInfo : CodeMethodInfo
  {
    internal CodeMetadataMethodInfo(UR.MethodInfo methodInfo,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      name = methodInfo.Name;
      returnType = methodInfo.ReturnType;
      UR.ParameterInfo[] metadataParameters = methodInfo.Parameters;
      parameters = new CodeParameterInfo[metadataParameters.Length];
      for(int parameterIndex  =  0; parameterIndex < metadataParameters.Length;parameterIndex++)
      {
        parameters[parameterIndex] = new CodeMetadataParameterInfo(metadataParameters[parameterIndex]);
      }

      isStatic = (methodInfo.CorAttributes & MethodAttributes.Static) != 0;
    }

    public override string Name
    {
      get
      {
        return name;
      }
    }

    public override string ReturnType
    {
      get
      {
        return returnType;
      }
    }

    public override CodeParameterInfo[] GetParameters()
    {
      return parameters;
    }

    public override bool IsStatic
    {
      get
      {
        return isStatic;
      }
    }

    private bool isStatic;
    private string name;
    private string returnType;
    private CodeParameterInfo[] parameters;
  }
  
  [Serializable]
  internal class CodeMetadataPropertyInfo : CodePropertyInfo
  {
    internal CodeMetadataPropertyInfo(UR.PropertyInfo propertyInfo,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      name = propertyInfo.Name;
      returnType = propertyInfo.PropertyType;
      UR.ParameterInfo[] metadataParameters = propertyInfo.Parameters;
      parameters = new CodeParameterInfo[metadataParameters.Length];
      for(int parameterIndex  =  0; parameterIndex < metadataParameters.Length;parameterIndex++)
      {
        parameters[parameterIndex] = new CodeMetadataParameterInfo(metadataParameters[parameterIndex]);
      }

      UR.MethodInfo methodInfo = null;
      if(propertyInfo.GetterMethodInfo != null)
        methodInfo = propertyInfo.GetterMethodInfo;
      else
        methodInfo = propertyInfo.SetterMethodInfo;

      if(methodInfo != null)
        isStatic = (methodInfo.CorAttributes & MethodAttributes.Static) != 0;
    }

    public override string Name
    {
      get
      {
        return name;
      }
    }

    public override string PropertyType
    {
      get
      {
        return returnType;
      }
    }

    public override CodeParameterInfo[] GetIndexParameters()
    {
      return parameters;
    }

    public override bool IsStatic
    {
      get
      {
        return isStatic;
      }
    }

    private bool isStatic;

    private string name;
    private string returnType;
    private CodeParameterInfo[] parameters;
  }
  
  [Serializable]
  internal class CodeMetadataFieldInfo : CodeFieldInfo
  {
    internal CodeMetadataFieldInfo(UR.FieldInfo fieldInfo,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      name = fieldInfo.Name;
      fieldType = fieldInfo.FieldType;
      isStatic = (fieldInfo.CorAttributes & FieldAttributes.Static) != 0;
      isConst = isStatic;
    }

    public override string Name
    {
      get
      {
        return name;
      }
    }

    public override string FieldType
    {
      get
      {
        return fieldType;
      }
    }

    public override bool IsStatic
    {
      get
      {
        return isStatic;
      }
    }

    public override bool IsConst
    {
      get
      {
        return isConst;
      }
    }


    private bool isStatic;
    private bool isConst;
    private string name;
    private string fieldType;
  }
  
  [Serializable]
  internal class CodeMetadataEventInfo : CodeEventInfo
  {
    internal CodeMetadataEventInfo(UR.EventInfo eventInfo,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      name  = eventInfo.Name;
      eventHandlerType = eventInfo.EventHandlerType;
      isStatic = false;
    }

    public override string Name
    {
      get
      {
        return name;
      }
    }

    public override string EventHandlerType 
    {
      get
      {
        return eventHandlerType;
      }
    }


    public override bool IsStatic
    {
      get
      {
        return isStatic;
      }
    }

    private bool isStatic;
    private string name;
    private string eventHandlerType;
  }

  [Serializable]
  internal class CodeModelMethodInfo : CodeMethodInfo
  {
    internal CodeModelMethodInfo(CodeTypeMethodDeclaration methodDeclaration,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      this.methodDeclaration = methodDeclaration;
      this.methodDeclaration.MemberInfo = this;
      parameters = new CodeParameterInfo[methodDeclaration.Parameters.Count];
      for(int parameterIndex  =  0; parameterIndex < methodDeclaration.Parameters.Count;parameterIndex++)
      {
        parameters[parameterIndex] = new CodeModelParameterInfo(methodDeclaration.Parameters[parameterIndex]);
      }

    }
    public override string Name
    {
      get
      {
        return methodDeclaration.Name;
      }
    }

    public override string ReturnType
    {
      get
      {
        if(methodDeclaration.ReturnType.TypeInfo != null)
          return methodDeclaration.ReturnType.TypeInfo.FullName;
        else
          return methodDeclaration.ReturnType.TypeName;
      }
    }

    public override CodeParameterInfo[] GetParameters()
    {
      return parameters;
    }

    public override bool IsStatic
    {
      get
      {
        return (methodDeclaration.Modifiers & CodeTypeMethodDeclaration.MemberDeclarationModifiers.Static) != 0;
      }
    }

    private CodeTypeMethodDeclaration methodDeclaration;
    private CodeParameterInfo[] parameters;
  }
    
  [Serializable]
  internal class CodeModelPropertyInfo : CodePropertyInfo
  {
    internal CodeModelPropertyInfo(CodeTypePropertyDeclaration propertyDeclaration,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      this.propertyDeclaration = propertyDeclaration;
      this.propertyDeclaration.MemberInfo = this;

      if(propertyDeclaration is CodeTypeIndexerDeclaration)
      {
        CodeTypeIndexerDeclaration indexerDeclaration  = propertyDeclaration as CodeTypeIndexerDeclaration;
        parameters = new CodeParameterInfo[indexerDeclaration.Parameters.Count];
        for(int parameterIndex  =  0; parameterIndex < indexerDeclaration.Parameters.Count;parameterIndex++)
        {
          parameters[parameterIndex] = new CodeModelParameterInfo(indexerDeclaration.Parameters[parameterIndex]);
        }
      }
      else
      {
        parameters = new CodeParameterInfo[0];
      }

    }
    public override string Name
    {
      get
      {
        return propertyDeclaration.Name;
      }
    }

    public override string PropertyType
    {
      get
      {
        if(propertyDeclaration.ReturnType.TypeInfo != null)
          return propertyDeclaration.ReturnType.TypeInfo.FullName;
        else
          return propertyDeclaration.ReturnType.TypeName;
      }
    }

    public override CodeParameterInfo[] GetIndexParameters()
    {
      return parameters;
    }

    public override bool IsStatic
    {
      get
      {
        return (propertyDeclaration.Modifiers & CodeTypePropertyDeclaration.MemberDeclarationModifiers.Static) != 0;
      }
    }

    private CodeTypePropertyDeclaration propertyDeclaration;
    private CodeParameterInfo[] parameters;
  }
  
  [Serializable]
  internal class CodeModelFieldInfo : CodeFieldInfo
  {
    internal CodeModelFieldInfo(CodeTypeFieldDeclaration fieldDeclaration, string filedName,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      this.filedName = filedName;
      this.fieldDeclaration = fieldDeclaration;
      this.fieldDeclaration.MemberInfo = this;
    }

    public override string Name
    {
      get
      {
        return filedName;
      }
    }

    public override string FieldType
    {
      get
      {
        if(fieldDeclaration.DeclarationType.TypeInfo != null)
          return fieldDeclaration.DeclarationType.TypeInfo.FullName;
        else
          return fieldDeclaration.DeclarationType.TypeName;
      }
    }

    public override bool IsStatic
    {
      get
      {
        return (fieldDeclaration.Modifiers & CodeTypeFieldDeclaration.MemberDeclarationModifiers.Static) != 0;
      }
    }

    public override bool IsConst
    {
      get
      {
        return (fieldDeclaration.Modifiers & CodeTypeFieldDeclaration.MemberDeclarationModifiers.Const) != 0;
      }
    }


    private string filedName;
    private CodeTypeFieldDeclaration fieldDeclaration;
  }
  
  [Serializable]
  internal class CodeModelEventInfo : CodeEventInfo
  {
    internal CodeModelEventInfo(CodeTypeEventDeclaration eventDeclaration, CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      this.eventName = eventDeclaration.Name;
      this.eventDeclaration = eventDeclaration;
      this.eventDeclaration.MemberInfo = this;
    }

    internal CodeModelEventInfo(CodeTypeEventListDeclaration eventListDeclaration, string eventName,CodeTypeInfo declaringTypeInfo):base(declaringTypeInfo)
    {
      this.eventName = eventName;
      this.eventListDeclaration = eventListDeclaration;
    }

    public override string Name
    {
      get
      {
        return eventName;
      }
    }

    public override string EventHandlerType 
    {
      get
      {
        if(eventListDeclaration != null)
        {
          if(eventListDeclaration.DeclarationType.TypeInfo != null)
            return eventListDeclaration.DeclarationType.TypeInfo.FullName;
          else
            return eventListDeclaration.DeclarationType.TypeName;
        }
        else //eventDeclaration != null
        {
          if(eventDeclaration.DeclarationType.TypeInfo != null)
            return eventDeclaration.DeclarationType.TypeInfo.FullName;
          else
            return eventDeclaration.DeclarationType.TypeName;
        }
      }
    }

    public override bool IsStatic
    {
      get
      {
        if(eventListDeclaration != null)
        {
          return (eventListDeclaration.Modifiers & CodeTypeMemberDeclaration.MemberDeclarationModifiers.Static) != 0;
        }
        else //eventDeclaration != null
        {
          return (eventDeclaration.Modifiers & CodeTypeMemberDeclaration.MemberDeclarationModifiers.Static) != 0;
        }
      }
    }

    private string eventName;
    private CodeTypeEventDeclaration eventDeclaration;
    private CodeTypeEventListDeclaration eventListDeclaration;
  }
}
www.java2v.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.