MemberInfo Class
Obtains information about the attributes of a member and provides access to member metadata.
Assembly: mscorlib (in mscorlib.dll)
| Name | Description | |
|---|---|---|
![]() | MemberInfo() | Initializes a new instance of the MemberInfo class. |
| Name | Description | |
|---|---|---|
![]() | CustomAttributes | Gets a collection that contains this member's custom attributes. |
![]() | DeclaringType | Gets the class that declares this member. |
![]() | MemberType | When overridden in a derived class, gets a MemberTypes value indicating the type of the member — method, constructor, event, and so on. |
![]() | MetadataToken | Gets a value that identifies a metadata element. |
![]() | Module | Gets the module in which the type that declares the member represented by the current MemberInfo is defined. |
![]() | Name | Gets the name of the current member. |
![]() | ReflectedType | Gets the class object that was used to obtain this instance of MemberInfo. |
| Name | Description | |
|---|---|---|
![]() | Equals(Object^) | Returns a value that indicates whether this instance is equal to a specified object.(Overrides Object::Equals(Object^).) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetCustomAttributes(Boolean) | When overridden in a derived class, returns an array of all custom attributes applied to this member. |
![]() | GetCustomAttributes(Type^, Boolean) | When overridden in a derived class, returns an array of custom attributes applied to this member and identified by Type. |
![]() | GetCustomAttributesData() | Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member. |
![]() | GetHashCode() | Returns the hash code for this instance.(Overrides Object::GetHashCode().) |
![]() | GetType() | |
![]() | IsDefined(Type^, Boolean) | When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member. |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | Equality(MemberInfo^, MemberInfo^) | Indicates whether two MemberInfo objects are equal. |
![]() ![]() | Inequality(MemberInfo^, MemberInfo^) | Indicates whether two MemberInfo objects are not equal. |
| Name | Description | |
|---|---|---|
![]() ![]() | _MemberInfo::GetIDsOfNames(Guid%, IntPtr, UInt32, UInt32, IntPtr) | Maps a set of names to a corresponding set of dispatch identifiers. |
![]() ![]() | _MemberInfo::GetType() | Gets a Type object representing the MemberInfo class. |
![]() ![]() | _MemberInfo::GetTypeInfo(UInt32, UInt32, IntPtr) | Retrieves the type information for an object, which can then be used to get the type information for an interface. |
![]() ![]() | _MemberInfo::GetTypeInfoCount(UInt32%) | Retrieves the number of type information interfaces that an object provides (either 0 or 1). |
![]() ![]() | _MemberInfo::Invoke(UInt32, Guid%, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) | Provides access to properties and methods exposed by an object. |
| Name | Description | |
|---|---|---|
![]() | GetCustomAttribute(Type^) | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttribute(Type^, Boolean) | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttribute<T>() | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttribute<T>(Boolean) | Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttributes() | Overloaded. Retrieves a collection of custom attributes that are applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttributes(Type^) | Overloaded. Retrieves a collection of custom attributes of a specified type that are applied to a specified member.(Defined by CustomAttributeExtensions.) |
![]() | GetCustomAttributes<T>(Boolean) | Overloaded. Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.(Defined by CustomAttributeExtensions.) |
![]() | IsDefined(Type^) | Overloaded. Indicates whether custom attributes of a specified type are applied to a specified member.(Defined by CustomAttributeExtensions.) |
The MemberInfo class is the abstract base class for classes used to obtain information about all members of a class (constructors, events, fields, methods, and properties).
This class introduces the basic functionality that all members provide.
Notes to Inheritors:
When you inherit from MemberInfo you must override the following members: GetCustomAttributes and IsDefined.
This example shows how to use various reflection classes to analyze the metadata contained in an assembly.
using namespace System; using namespace System::Reflection; static void Display(Int32 indent, String^ format, ... array<Object^>^param) { Console::Write("{0}", gcnew String (' ', indent)); Console::WriteLine(format, param); } // Displays the custom attributes applied to the specified member. static void DisplayAttributes(Int32 indent, MemberInfo^ mi) { // Get the set of custom attributes; if none exist, just return. array<Object^>^attrs = mi->GetCustomAttributes(false); if (attrs->Length==0) { return; } // Display the custom attributes applied to this member. Display(indent+1, "Attributes:"); for each ( Object^ o in attrs ) { Display(indent*2, "{0}", o); } } void main() { try { // This variable holds the amount of indenting that // should be used when displaying each line of information. Int32 indent = 0; // Display information about the EXE assembly. Assembly^ a = System::Reflection::Assembly::GetExecutingAssembly(); Display(indent, "Assembly identity={0}", gcnew array<Object^> {a->FullName}); Display(indent+1, "Codebase={0}", gcnew array<Object^> {a->CodeBase}); // Display the set of assemblies our assemblies reference. Display(indent, "Referenced assemblies:"); for each ( AssemblyName^ an in a->GetReferencedAssemblies() ) { Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", gcnew array<Object^> {an->Name, an->Version, an->CultureInfo, (BitConverter::ToString(an->GetPublicKeyToken()))}); } Display(indent, ""); // Display information about each assembly loading into this AppDomain. for each ( Assembly^ b in AppDomain::CurrentDomain->GetAssemblies()) { Display(indent, "Assembly: {0}", gcnew array<Object^> {b}); // Display information about each module of this assembly. for each ( Module^ m in b->GetModules(true) ) { Display(indent+1, "Module: {0}", gcnew array<Object^> {m->Name}); } // Display information about each type exported from this assembly. indent += 1; for each ( Type^ t in b->GetExportedTypes() ) { Display(0, ""); Display(indent, "Type: {0}", gcnew array<Object^> {t}); // For each type, show its members & their custom attributes. indent += 1; for each (MemberInfo^ mi in t->GetMembers() ) { Display(indent, "Member: {0}", gcnew array<Object^> {mi->Name}); DisplayAttributes(indent, mi); // If the member is a method, display information about its parameters. if (mi->MemberType==MemberTypes::Method) { for each ( ParameterInfo^ pi in (((MethodInfo^) mi)->GetParameters())) { Display(indent+1, "Parameter: Type={0}, Name={1}", gcnew array<Object^> {pi->ParameterType, pi->Name}); } } // If the member is a property, display information about the property's accessor methods. if (mi->MemberType==MemberTypes::Property) { for each ( MethodInfo^ am in (((PropertyInfo^) mi)->GetAccessors()) ) { Display(indent+1, "Accessor method: {0}", gcnew array<Object^> {am}); } } } // Display a formatted string indented by the specified amount. indent -= 1; } indent -= 1; } } catch (Exception^ e) { Console::WriteLine(e->Message); } } // The output shown below is abbreviated. // //Assembly identity=Reflection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null // Codebase=file:///C:/Reflection.exe //Referenced assemblies: // Name=mscorlib, Version=1.0.5000.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89 // Name=Microsoft.VisualBasic, Version=7.0.5000.0, Culture=, PublicKey token=B0-3F-5F-7F-11-D5-0A-3A // //Assembly: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // Module: mscorlib.dll // Module: prc.nlp // Module: prcp.nlp // Module: ksc.nlp // Module: ctype.nlp // Module: xjis.nlp // Module: bopomofo.nlp // Module: culture.nlp // Module: region.nlp // Module: sortkey.nlp // Module: charinfo.nlp // Module: big5.nlp // Module: sorttbls.nlp // Module: l_intl.nlp // Module: l_except.nlp // // Type: System.Object // Member: GetHashCode // Member: Equals // Parameter: Type=System.Object, Name=obj // Member: ToString // Member: Equals // Parameter: Type=System.Object, Name=objA // Parameter: Type=System.Object, Name=objB // Member: ReferenceEquals // Parameter: Type=System.Object, Name=objA // Parameter: Type=System.Object, Name=objB // Member: GetType // Member: .ctor // // Type: System.ICloneable // Member: Clone // // Type: System.Collections.IEnumerable // Member: GetEnumerator // Attributes: // System.Runtime.InteropServices.DispIdAttribute // // Type: System.Collections.ICollection // Member: get_IsSynchronized // Member: get_SyncRoot // Member: get_Count // Member: CopyTo // Parameter: Type=System.Array, Name=array // Parameter: Type=System.Int32, Name=index // Member: Count // Accessor method: Int32 get_Count() // Member: SyncRoot // Accessor method: System.Object get_SyncRoot() // Member: IsSynchronized // Accessor method: Boolean get_IsSynchronized() //
for full trust for inheritors. This class cannot be inherited by partially trusted code.
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
This type is thread safe.






