获取有关成员属性的信息并提供对成员元数据的访问权限。
命名空间: System.Reflection
程序集: mscorlib(位于 mscorlib.dll)
继承层次结构
System.Object
System.Reflection.MemberInfo
System.Reflection.EventInfo
System.Reflection.FieldInfo
System.Reflection.MethodBase
System.Reflection.PropertyInfo
System.Type
[SerializableAttribute] [ClassInterfaceAttribute(ClassInterfaceType.None)] [ComVisibleAttribute(true)] [PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]public abstract class MemberInfo : ICustomAttributeProvider, _MemberInfo
构造函数
名称 | 说明 | |
---|---|---|
![]() |
MemberInfo() | 初始化 MemberInfo 类的新实例。 |
属性
名称 | 说明 | |
---|---|---|
![]() |
CustomAttributes | 获取包含此成员的自定义特性的集合。 |
![]() |
DeclaringType | 获取声明此成员的类。 |
![]() |
MemberType | 当在派生类中重写时获取 MemberTypes 值,该值指示该成员的类型 — 方法、 构造函数、 事件中,依次类推。 |
![]() |
MetadataToken | 获取一个值,标识元数据中的元素。 |
![]() |
Module | 获取在其中声明该成员的类型表示由当前类型的模块 MemberInfo 定义。 |
![]() |
Name | 获取当前成员的名称。 |
![]() |
ReflectedType | 获取用于获取此实例的类对象 MemberInfo。 |
方法
名称 | 说明 | |
---|---|---|
![]() |
Equals(Object) | 返回一个值,该值指示此实例是否与指定的对象相等。(覆盖 Object.Equals(Object)。) |
![]() |
Finalize() | 在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(继承自 Object。) |
![]() |
GetCustomAttributes(Boolean) | 当在派生类中重写,则返回的所有自定义特性应用于此成员的数组。 |
![]() |
GetCustomAttributes(Type,Boolean) | 当在派生类中重写时返回的自定义特性应用于此成员和由标识数组 Type。 |
![]() |
GetCustomAttributesData() | 返回的列表 CustomAttributeData 对象表示有关已应用于目标成员的特性的数据。 |
![]() |
GetHashCode() | 返回此实例的哈希代码。(覆盖 Object.GetHashCode()。) |
![]() |
GetType() | 获取当前实例的 Type。(继承自 Object。) |
![]() |
IsDefined(Type,Boolean) | 当在派生类中重写,该值指示是否指定类型的字段或其派生类型的一个或多个特性应用于此成员。 |
![]() |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object。) |
![]() |
ToString() | 返回表示当前对象的字符串。(继承自 Object。) |
运算符
名称 | 说明 | |
---|---|---|
![]() ![]() |
Equality(MemberInfo,MemberInfo) | 指示两个 MemberInfo 对象是否相等。 |
![]() ![]() |
Inequality(MemberInfo,MemberInfo) | 指示两个 MemberInfo 对象是否不相等。 |
显式接口实现
名称 | 说明 | |
---|---|---|
![]() ![]() |
_MemberInfo.GetIDsOfNames(Guid,IntPtr,UInt32,UInt32,IntPtr) | 将一组名称映射为对应的一组调度标识符。 |
![]() ![]() |
_MemberInfo.GetType() | 获取 Type 对象,表示 MemberInfo 类。 |
![]() ![]() |
_MemberInfo.GetTypeInfo(UInt32,UInt32,IntPtr) | 检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 |
![]() ![]() |
_MemberInfo.GetTypeInfoCount(UInt32) | 检索对象提供的类型信息接口的数量(0 或 1)。 |
![]() ![]() |
_MemberInfo.Invoke(UInt32,Guid,UInt32,Int16,IntPtr,IntPtr,IntPtr,IntPtr) | 提供对某一对象公开的属性和方法的访问。 |
扩展方法
名称 | 说明 | |
---|---|---|
![]() |
GetCustomAttribute(Type) | 已重载。检索指定类型的应用于指定的成员的自定义属性。(由 CustomAttributeExtensions 定义。) |
![]() |
GetCustomAttribute(Type,Boolean) | 已重载。检索指定类型的应用于指定的成员,并根据需要检查该成员的祖先的自定义属性。(由 CustomAttributeExtensions 定义。) |
![]() |
GetCustomAttribute |
已重载。检索指定类型的应用于指定的成员的自定义属性。(由 CustomAttributeExtensions 定义。) |
![]() |
GetCustomAttribute |
已重载。检索指定类型的应用于指定的成员,并根据需要检查该成员的祖先的自定义属性。(由 CustomAttributeExtensions 定义。) |
![]() |
GetCustomAttributes() | 已重载。检索应用于指定的成员的自定义特性的集合。(由 CustomAttributeExtensions 定义。) |
![]() |
GetCustomAttributes(Type) | 已重载。检索具有指定类型的自定义应用于指定的成员的特性的集合。(由 CustomAttributeExtensions 定义。) |
![]() |
GetCustomAttributes |
已重载。检索应用于指定成员的自定义特性的指定类型的集合,并根据需要检查该成员的祖先。(由 CustomAttributeExtensions 定义。) |
![]() |
IsDefined(Type) | 已重载。指示是否为指定类型的自定义特性随即应用于指定的成员。(由 CustomAttributeExtensions 定义。) |
备注
MemberInfo 类是用于获取有关类 (构造函数、 事件、 字段、 方法和属性) 的所有成员的信息的类的抽象基类。
此类引入的所有成员都提供的基本功能。
继承函数说明:
继承自 MemberInfo 必须重写以下成员︰ GetCustomAttributes 和 IsDefined。
示例
此示例演示如何使用各种反射类来分析包含在程序集中的元数据。
using System;using System.Reflection;class Module1 { public static void Main() { // 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 = typeof(Module1).Assembly; Display(indent, "Assembly identity={0}", a.FullName); Display(indent+1, "Codebase={0}", a.CodeBase); // Display the set of assemblies our assemblies reference. Display(indent, "Referenced assemblies:"); foreach (AssemblyName an in a.GetReferencedAssemblies() ) { Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", an.Name, an.Version, an.CultureInfo.Name, (BitConverter.ToString (an.GetPublicKeyToken()))); } Display(indent, ""); // Display information about each assembly loading into this AppDomain. foreach (Assembly b in AppDomain.CurrentDomain.GetAssemblies()) { Display(indent, "Assembly: {0}", b); // Display information about each module of this assembly. foreach ( Module m in b.GetModules(true) ) { Display(indent+1, "Module: {0}", m.Name); } // Display information about each type exported from this assembly. indent += 1; foreach ( Type t in b.GetExportedTypes() ) { Display(0, ""); Display(indent, "Type: {0}", t); // For each type, show its members & their custom attributes. indent += 1; foreach (MemberInfo mi in t.GetMembers() ) { Display(indent, "Member: {0}", mi.Name); DisplayAttributes(indent, mi); // If the member is a method, //display information about its parameters. if (mi.MemberType==MemberTypes.Method) { foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() ) { Display(indent+1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name); } } // If the member is a property, //display information about the property's accessor methods. if (mi.MemberType==MemberTypes.Property) { foreach ( MethodInfo am in ((PropertyInfo) mi).GetAccessors() ) { Display(indent+1, "Accessor method: {0}", am); } } } indent -= 1; } indent -= 1; } } // Displays the custom attributes applied to the specified member. public static void DisplayAttributes(Int32 indent, MemberInfo mi) { // Get the set of custom attributes; if none exist, just return. object[] attrs = mi.GetCustomAttributes(false); if (attrs.Length==0) {return;} // Display the custom attributes applied to this member. Display(indent+1, "Attributes:"); foreach ( object o in attrs ) { Display(indent+2, "{0}", o.ToString()); } } // Display a formatted string indented by the specified amount. public static void Display(Int32 indent, string format, params object[] param) { Console.Write(new string(' ', indent*2)); Console.WriteLine(format, param); } }//The output shown below is abbreviated.// //Assembly identity=ReflectionCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null //Codebase=file:///C:/Documents and Settings/test/My Documents/Visual Studio 2005 /Projects/Reflection/Reflection/obj/Debug/Reflection.exe//Referenced assemblies: // Name=mscorlib, Version=2.0.0.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89// //Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll // Module: mscorlib.dll// // Type: System.Object // Member: GetType // Member: ToString // Member: Equals // Parameter: Type=System.Object, Name=obj // Member: Equals // Parameter: Type=System.Object, Name=objA // Parameter: Type=System.Object, Name=objB // Member: ReferenceEquals // Attributes: // System.Runtime.ConstrainedExecution.ReliabilityContractAttribute // Parameter: Type=System.Object, Name=objA // Parameter: Type=System.Object, Name=objB // Member: GetHashCode // Member: .ctor // Attributes: // System.Runtime.ConstrainedExecution.ReliabilityContractAttribute// // Type: System.ICloneable // Member: Clone// // Type: System.Collections.IEnumerable // Member: GetEnumerator // Attributes: // System.Runtime.InteropServices.DispIdAttribute// // Type: System.Collections.ICollection // Member: CopyTo // Parameter: Type=System.Array, Name=array // Parameter: Type=System.Int32, Name=index // Member: get_Count // Member: get_SyncRoot // Member: get_IsSynchronized // Member: Count // Accessor method: Int32 get_Count() // Member: SyncRoot // Accessor method: System.Object get_SyncRoot() // Member: IsSynchronized // Accessor method: Boolean get_IsSynchronized()// // Type: System.Collections.IList // Member: get_Item // Parameter: Type=System.Int32, Name=index // Member: set_Item // Parameter: Type=System.Int32, Name=index // Parameter: Type=System.Object, Name=value // Member: Add // Parameter: Type=System.Object, Name=value // Member: Contains // Parameter: Type=System.Object, Name=value // Member: Clear // Member: get_IsReadOnly // Member: get_IsFixedSize // Member: IndexOf // Parameter: Type=System.Object, Name=value // Member: Insert // Parameter: Type=System.Int32, Name=index // Parameter: Type=System.Object, Name=value // Member: Remove // Parameter: Type=System.Object, Name=value // Member: RemoveAt // Parameter: Type=System.Int32, Name=index // Member: Item // Accessor method: System.Object get_Item(Int32) // Accessor method: Void set_Item(Int32, System.Object) // Member: IsReadOnly // Accessor method: Boolean get_IsReadOnly() // Member: IsFixedSize // Accessor method: Boolean get_IsFixedSize()// // Type: System.Array // Member: IndexOf // Parameter: Type=T[], Name=array // Parameter: Type=T, Name=value // Member: AsReadOnly // Parameter: Type=T[], Name=array // Member: Resize // Attributes: // System.Runtime.ConstrainedExecution.ReliabilityContractAttribute // Parameter: Type=T[]&, Name=array // Parameter: Type=System.Int32, Name=newSize // Member: BinarySearch // Attributes: // System.Runtime.ConstrainedExecution.ReliabilityContractAttribute // Parameter: Type=T[], Name=array // Parameter: Type=T, Name=value // Member: BinarySearch // Attributes: // System.Runtime.ConstrainedExecution.ReliabilityContractAttribute // Parameter: Type=T[], Name=array // Parameter: Type=T, Name=value // Parameter: Type=System.Collections.Generic.IComparer`1[T], Name=comparer
安全性
SecurityAction.InheritanceDemand
for full trust for inheritors. This class cannot be inherited by partially trusted code.
备注:转自 https://msdn.microsoft.com/zh-cn/library/system.reflection.memberinfo.aspx