#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll
#endregion
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace System.Reflection
{
//
// 摘要:
// 获取有关成员属性的信息并提供对成员元数据的访问权限。
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(_MemberInfo))]
[ComVisible(true)]
public abstract class MemberInfo : ICustomAttributeProvider, _MemberInfo
{
//
// 摘要:
// 初始化 System.Reflection.MemberInfo 类的新实例。
protected MemberInfo();
//
// 摘要:
// 在派生类中重写时,获取 System.Reflection.MemberTypes 值,该值指示成员类型 - 方法、构造函数、事件等。
//
// 返回结果:
// 指示成员类型的 System.Reflection.MemberTypes 值。
public abstract MemberTypes MemberType { get; }
//
// 摘要:
// 获取当前成员的名称。
//
// 返回结果:
// ASystem.String包含此成员的名称。
public abstract string Name { get; }
//
// 摘要:
// 获取声明此成员的类。
//
// 返回结果:
// Type 对象为声明此成员的类。
public abstract Type DeclaringType { get; }
//
// 摘要:
// 获取用于获取此实例的类对象 MemberInfo。
//
// 返回结果:
// Type 对象,通过它获取了此 MemberInfo 对象。
public abstract Type ReflectedType { get; }
//
// 摘要:
// 获取包含此成员的自定义特性的集合。
//
// 返回结果:
// 包含此成员的自定义属性集合。
public virtual IEnumerable<CustomAttributeData> CustomAttributes { get; }
//
// 摘要:
// 获取一个值,该值标识元数据元素。
//
// 返回结果:
// 结合 System.Reflection.MemberInfo.Module,该值能够唯一标识元数据元素。
//
// 异常:
// T:System.InvalidOperationException:
// 当前 System.Reflection.MemberInfo 表示数组方法(如 Address),针对元素类型是尚未完成的动态类型的数组类型。 若要在这种情况下获取元数据标记,将
// System.Reflection.MemberInfo 对象传递给 System.Reflection.Emit.ModuleBuilder.GetMethodToken(System.Reflection.MethodInfo)
// 方法;或使用 System.Reflection.Emit.ModuleBuilder.GetArrayMethodToken(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[])
// 方法直接获取标记,而不是首先使用 System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[])
// 方法获取 System.Reflection.MethodInfo。
public virtual int MetadataToken { get; }
//
// 摘要:
// 获取在其中声明该成员的类型表示由当前类型的模块 System.Reflection.MemberInfo 定义。
//
// 返回结果:
// System.Reflection.Module 在其中声明该成员的类型由当前 System.Reflection.MemberInfo 定义。
//
// 异常:
// T:System.NotImplementedException:
// 未实现此方法。
public virtual Module Module { get; }
//
// 摘要:
// 返回一个值,该值指示此实例是否与指定的对象相等。
//
// 参数:
// obj:
// 与此实例进行比较的对象,或为 null。
//
// 返回结果:
// 如果 true 等于此实例的类型和值,则为 obj;否则为 false。
public override bool Equals(object obj);
//
// 摘要:
// 当在派生类中重写,则返回的所有自定义特性应用于此成员的数组。
//
// 参数:
// inherit:
// true 搜索此成员继承链,以查找这些属性;否则为 false。 属性和事件,则忽略此参数请参阅备注。
//
// 返回结果:
// 一个数组,包含应用于此成员的所有自定义属性或包含零个元素,如果未定义属性的数组。
//
// 异常:
// T:System.InvalidOperationException:
// 此成员所属加载到只反射上下文的类型。 请参阅 如何:将程序集加载到仅反射上下文中。
//
// T:System.TypeLoadException:
// 无法加载自定义特性类型。
public abstract object[] GetCustomAttributes(bool inherit);
//
// 摘要:
// 在派生类中重写时,返回应用于此成员并由 System.Type 标识的自定义属性的数组。
//
// 参数:
// attributeType:
// 要搜索的属性的类型。 仅返回可分配给此类型的属性。
//
// inherit:
// 如果要搜索此成员的继承链以查找属性,则为 true;否则为 false。 会忽略属性和事件的此参数;请参阅备注。
//
// 返回结果:
// 应用于此成员的自定义属性的数组,如果未应用可分配给 attributeType 的属性,则为含零元素的数组。
//
// 异常:
// T:System.TypeLoadException:
// 无法加载自定义属性类型。
//
// T:System.ArgumentNullException:
// 如果 attributeType 为 null。
//
// T:System.InvalidOperationException:
// 此成员属于加载到仅反射的上下文的类型。 请参阅如何:将程序集加载到仅反射上下文中。
public abstract object[] GetCustomAttributes(Type attributeType, bool inherit);
//
// 摘要:
// 返回的列表 System.Reflection.CustomAttributeData 对象表示有关已应用于目标成员的特性的数据。
//
// 返回结果:
// 泛型列表 System.Reflection.CustomAttributeData 对象表示有关已应用于目标成员的特性的数据。
public virtual IList<CustomAttributeData> GetCustomAttributesData();
//
// 摘要:
// 返回此实例的哈希代码。
//
// 返回结果:
// 32 位有符号整数哈希代码。
public override int GetHashCode();
//
// 摘要:
// 当在派生类中重写,该值指示是否指定类型的字段或其派生类型的一个或多个特性应用于此成员。
//
// 参数:
// attributeType:
// 要搜索的自定义特性的类型。 搜索范围包括派生的类型。
//
// inherit:
// true 搜索此成员继承链,以查找这些属性;否则为 false。 属性和事件,则忽略此参数请参阅备注。
//
// 返回结果:
// true 如果一个或多个实例 attributeType 或其派生任何的类型为应用于此成员; 否则为 false。
public abstract bool IsDefined(Type attributeType, bool inherit);
//
// 摘要:
// 指示两个 System.Reflection.MemberInfo 对象是否相等。
//
// 参数:
// left:
// System.Reflection.MemberInfo 要与 right。
//
// right:
// System.Reflection.MemberInfo 要与 left。
//
// 返回结果:
// true 如果 left 是否等同于 right; 否则为 false。
public static bool operator ==(MemberInfo left, MemberInfo right);
//
// 摘要:
// 指示两个 System.Reflection.MemberInfo 对象是否不相等。
//
// 参数:
// left:
// System.Reflection.MemberInfo 要与 right。
//
// right:
// System.Reflection.MemberInfo 要与 left。
//
// 返回结果:
// true 如果 left 是否不等于 right; 否则为 false。
public static bool operator !=(MemberInfo left, MemberInfo right);
}
}