#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.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Security;
namespace System.Reflection
{
//
// 摘要:
// 提供有关方法和构造函数的信息。
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(_MethodBase))]
[ComVisible(true)]
public abstract class MethodBase : MemberInfo, _MethodBase
{
//
// 摘要:
// 初始化 System.Reflection.MethodBase 类的新实例。
protected MethodBase();
//
// 摘要:
// 获取一个值,该值指示方法是否泛型方法定义。
//
// 返回结果:
// 如果当前 System.Reflection.MethodBase 对象表示泛型方法的定义,则为 true;否则为 false。
public virtual bool IsGenericMethodDefinition { get; }
//
// 摘要:
// 获取一个值,该值指示当前方法或构造函数是安全关键或安全可靠关键在当前信任级别,因此可以执行关键操作。
//
// 返回结果:
// true 如果当前方法或构造函数是安全关键或安全可靠关键在当前信任级别; false 如果它是透明的。
public virtual bool IsSecurityCritical { get; }
//
// 摘要:
// 获取一个值,该值指示是否当前方法或构造函数是安全可靠关键在当前信任级别;也就是说,它是否可以执行关键操作并可以由透明代码访问。
//
// 返回结果:
// true 如果在当前信任级别; 的方法或构造函数是安全可靠关键 false 如果它是安全关键的或透明。
public virtual bool IsSecuritySafeCritical { get; }
//
// 摘要:
// 获取一个值,该值指示是否当前方法或构造函数是在透明当前信任级别,并因此不能执行一些关键操作。
//
// 返回结果:
// true 如果在当前信任级别; 的方法或构造函数是安全透明否则为 false。
public virtual bool IsSecurityTransparent { get; }
//
// 摘要:
// 获取一个值,该值指示这是否为公共方法。
//
// 返回结果:
// true 如果此方法是公共的则否则为 false。
public bool IsPublic { get; }
//
// 摘要:
// 获取一个值,该值指示此成员私有。
//
// 返回结果:
// true 如果对此方法的访问仅限于其他成员的类,然后重试。否则为 false。
public bool IsPrivate { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此方法或构造函数的可见性 System.Reflection.MethodAttributes.Family; 即方法或构造函数是仅在其类以及派生的类中可见。
//
// 返回结果:
// true 如果访问此方法或构造函数准确描述由 System.Reflection.MethodAttributes.Family; 否则为 false。
public bool IsFamily { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此方法或构造函数的潜在可见 System.Reflection.MethodAttributes.Assembly; 也就是说,方法或构造函数显示最多为同一程序集中的其他类型也看不到派生类型的程序集之外。
//
// 返回结果:
// true 如果此方法或构造函数的可见性准确描述由 System.Reflection.MethodAttributes.Assembly; 否则为 false。
public bool IsAssembly { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此方法或构造函数的可见性 System.Reflection.MethodAttributes.FamANDAssem; 也就是说,方法或构造函数可由派生类中,但仅限它们是否位于同一程序集中。
//
// 返回结果:
// true 如果访问此方法或构造函数准确描述由 System.Reflection.MethodAttributes.FamANDAssem; 否则为 false。
public bool IsFamilyAndAssembly { get; }
//
// 摘要:
// 获取一个值,该值指示是否由描述此方法或构造函数的潜在可见 System.Reflection.MethodAttributes.FamORAssem; 也就是说,该方法或构造函数可以调用由派生类无论他们身在何处,并由同一程序集中的类。
//
// 返回结果:
// true 如果访问此方法或构造函数准确描述由 System.Reflection.MethodAttributes.FamORAssem; 否则为 false。
public bool IsFamilyOrAssembly { get; }
//
// 摘要:
// 获取一个值,该值指示方法是否 static。
//
// 返回结果:
// true 如果此方法是 static; 否则为 false。
public bool IsStatic { get; }
//
// 摘要:
// 获取一个值,该值指示此方法是否 final。
//
// 返回结果:
// true 如果此方法是 final; 否则为 false。
public bool IsFinal { get; }
//
// 摘要:
// 获取一个值,该值指示方法是否为 virtual。
//
// 返回结果:
// 如果方法为 virtual,则为 true;否则为 false。
public bool IsVirtual { get; }
//
// 摘要:
// 获取一个值,该值指示是否在派生类中隐藏只有完全相同的签名的相同种类的成员。
//
// 返回结果:
// true 如果声明; 隐藏该成员,否则为 false。
public bool IsHideBySig { get; }
//
// 摘要:
// 获取一个值,该值指示该方法为抽象。
//
// 返回结果:
// true 如果该方法是抽象的;否则为 false。
public bool IsAbstract { get; }
//
// 摘要:
// 获取一个值,该值指示该方法泛型。
//
// 返回结果:
// true 如果当前 System.Reflection.MethodBase 表示泛型方法; 否则为 false。
public virtual bool IsGenericMethod { get; }
//
// 摘要:
// 获取一个值,该值指示泛型方法是否包含未分配的泛型类型参数。
//
// 返回结果:
// true 如果当前 System.Reflection.MethodBase 对象表示泛型方法,其中包含未分配的泛型类型参数; 否则为 false。
public virtual bool ContainsGenericParameters { get; }
//
// 摘要:
// 获取一个值,该值指示方法是否一个构造函数。
//
// 返回结果:
// true 如果此方法是构造函数由 System.Reflection.ConstructorInfo 对象 (请注意,在备注查看有关 System.Reflection.Emit.ConstructorBuilder
// 对象); 否则为 false。
[ComVisible(true)]
public bool IsConstructor { get; }
//
// 摘要:
// 获取一个值,该值指示此方法的调用约定。
//
// 返回结果:
// System.Reflection.CallingConventions 为此方法。
public virtual CallingConventions CallingConvention { get; }
//
// 摘要:
// 获取与此方法关联的属性。
//
// 返回结果:
// System.Reflection.MethodAttributes 值之一。
public abstract MethodAttributes Attributes { get; }
//
// 摘要:
// 获取一种方法的内部元数据表示的句柄。
//
// 返回结果:
// 一个 System.RuntimeMethodHandle 对象。
public abstract RuntimeMethodHandle MethodHandle { get; }
//
// 摘要:
// 获取 System.Reflection.MethodImplAttributes 标志,用于指定某个方法实现的属性。
//
// 返回结果:
// 方法实现标志。
public virtual MethodImplAttributes MethodImplementationFlags { get; }
//
// 摘要:
// 获取一个值,该值指示此方法是否具有特殊名称。
//
// 返回结果:
// true 如果此方法具有特殊名称,则否则为 false。
public bool IsSpecialName { get; }
//
// 摘要:
// 返回表示当前的执行方法的 MethodBase 对象。
//
// 返回结果:
// System.Reflection.MethodBase.GetCurrentMethod 是一个静态方法,从一个执行方法中调用,且会返回有关该方法的信息。
// 表示当前的执行方法的 MethodBase 对象。
//
// 异常:
// T:System.Reflection.TargetException:
// 使用晚期绑定机制调用了此成员。
public static MethodBase GetCurrentMethod();
//
// 摘要:
// 获取 System.Reflection.MethodBase 构造函数或由指定的句柄,用于指定泛型类型的方法的对象。
//
// 参数:
// handle:
// 构造函数或方法的内部元数据表示的句柄。
//
// declaringType:
// 定义构造函数或方法的泛型类型句柄。
//
// 返回结果:
// 一个 System.Reflection.MethodBase 对象,表示方法或构造函数指定 handle, ,由指定的泛型类型 declaringType。
//
// 异常:
// T:System.ArgumentException:
// handle 无效。
[ComVisible(false)]
public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle, RuntimeTypeHandle declaringType);
//
// 摘要:
// 通过使用该方法的内部元数据表示形式 (句柄) 获取方法的信息。
//
// 参数:
// handle:
// 该方法的句柄。
//
// 返回结果:
// 一个 MethodBase 包含有关方法的信息。
//
// 异常:
// T:System.ArgumentException:
// handle 无效。
public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle);
//
// 摘要:
// 返回一个值,该值指示此实例是否与指定的对象相等。
//
// 参数:
// obj:
// 与此实例进行比较的对象,或为 null。
//
// 返回结果:
// 如果 true 等于此实例的类型和值,则为 obj;否则为 false。
public override bool Equals(object obj);
//
// 摘要:
// 返回 System.Type 对象的数组,这些对象表示泛型方法的类型实参或泛型方法定义的类型形参。
//
// 返回结果:
// System.Type 对象的数组,这些对象表示泛型方法的类型变量或泛型方法定义的类型参数。 如果当前方法不是泛型方法,则返回空数组。
//
// 异常:
// T:System.NotSupportedException:
// 当前对象是 System.Reflection.ConstructorInfo。 在.NET Framework 2.0 版中不支持泛型构造函数。 如果未在派生类中重写此方法,该异常是默认行为。
[ComVisible(true)]
public virtual Type[] GetGenericArguments();
//
// 摘要:
// 返回此实例的哈希代码。
//
// 返回结果:
// 32 位有符号整数哈希代码。
public override int GetHashCode();
//
// 摘要:
// 当在派生类中重写时获取 System.Reflection.MethodBody 对象,它提供访问当前方法的 MSIL 流、 本地变量和异常。
//
// 返回结果:
// 一个 System.Reflection.MethodBody 对象,它提供访问当前方法的 MSIL 流、 本地变量和异常。
//
// 异常:
// T:System.InvalidOperationException:
// 除非在派生类中重写,则此方法无效。
[SecuritySafeCritical]
public virtual MethodBody GetMethodBody();
//
// 摘要:
// 在派生的类中重写时,返回 System.Reflection.MethodImplAttributes 标志。
//
// 返回结果:
// MethodImplAttributes 标志。
public abstract MethodImplAttributes GetMethodImplementationFlags();
//
// 摘要:
// 当在派生类中重写,获取指定的方法或构造函数的参数。
//
// 返回结果:
// 类型的数组 ParameterInfo 包含的签名匹配的方法 (或构造函数) 的信息反映由此 MethodBase 实例。
public abstract ParameterInfo[] GetParameters();
//
// 摘要:
// 使用指定参数调用由当前实例表示的方法或构造函数。
//
// 参数:
// obj:
// 在其上调用方法或构造函数的对象。 如果方法是静态的,则忽略此参数。 如果构造函数是静态的,则此参数必须是 null 或定义构造函数的类的实例。
//
// parameters:
// 调用方法或构造函数的参数列表。 此对象数组在数量、顺序和类型方面与要调用的方法或构造函数的参数相同。 如果不存在任何参数,则 parameters 应为
// null。 如果由此实例表示的方法或构造函数采用了 ref 参数(在 Visual Basic 中为 ByRef),那么此参数不需要特殊属性来通过此函数调用此方法或构造函数。
// 此数组中未使用值显式初始化的任何对象都将包含该对象类型的默认值。 对于引用类型元素,此值为 null。 对于值类型元素,此值为 0、0.0 或 false,具体取决于特定的元素类型。
//
// 返回结果:
// 一个包含已调用方法的返回值或包含已调用构造函数的 null 的对象。 还可修改 parameters 数组的元素,其中这些元素使用 ref 或 out 关键字表示声明的参数。
//
// 异常:
// T:System.Reflection.TargetException:
// 在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 System.Exception。 obj 参数为 null,且此方法不是静态方法。
// - 或 - 该方法不由 obj 的类声明或继承。 - 或 - 调用静态构造函数,obj 既不是 null,也不是声明构造函数的类的实例。
//
// T:System.ArgumentException:
// parameters 数组的元素与此实例反映的方法或构造函数的签名不匹配。
//
// T:System.Reflection.TargetInvocationException:
// 调用的方法或构造函数引发异常。 - 或 - 当前实例是包含无法验证的代码的 System.Reflection.Emit.DynamicMethod。 请参阅“验证”部分中的
// System.Reflection.Emit.DynamicMethod 注释。
//
// T:System.Reflection.TargetParameterCountException:
// parameters 数组的参数数量不正确。
//
// T:System.MethodAccessException:
// 在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 System.MemberAccessException。 调用方没有执行由当前实例表示的方法或构造函数的权限。
//
// T:System.InvalidOperationException:
// 声明该方法的类型为开放式泛型类型。 也就是说,System.Type.ContainsGenericParameters 属性为声明类型返回 true。
//
// T:System.NotSupportedException:
// 当前实例为 System.Reflection.Emit.MethodBuilder。
[DebuggerHidden]
[DebuggerStepThrough]
public object Invoke(object obj, object[] parameters);
//
// 摘要:
// 当在派生类中重写时,将调用的反射的方法或使用给定的参数的构造函数。
//
// 参数:
// obj:
// 对其调用方法或构造函数的对象。 如果一种方法是静态的则忽略此参数。 如果一个构造函数是静态的此参数必须为 null 或定义构造函数的类的实例。
//
// invokeAttr:
// 一个位掩码,是从 0 或多个位标志的组合 System.Reflection.BindingFlags。 如果 binder 是 null, ,此参数的值赋给
// System.Reflection.BindingFlags.Default; 因此,在传递的任何内容将被忽略。
//
// binder:
// 一个对象,它启用绑定、对参数类型的强制、对成员的调用,以及通过反射对 MemberInfo 对象的检索。 如果 binder 为 null,则使用默认联编程序。
//
// parameters:
// 调用的方法或构造函数参数列表。 这是具有相同的个数、 顺序和类型的对象的数组作为方法或要调用构造函数的参数。 如果没有任何参数,这应该是 null。 如果该方法或此实例所表示的构造函数采用
// ByRef 参数,则不需要为该参数以便调用该方法或构造函数使用此函数的特殊属性。 不使用值显式初始化此数组中的任何对象将包含所选对象类型的默认值。 对于引用类型的元素,此值是
// null。 对于值类型的元素,此值为 0、 0.0 或 false, ,具体取决于特定的元素类型。
//
// culture:
// 用于控制类型强制的 CultureInfo 的实例。 如果这是 null,则使用当前线程的 CultureInfo。 (例如,这对于将表示 1000 的
// String 转换为 Double 值是必需的,因为不同的区域性以不同的方式表示 1000。)
//
// 返回结果:
// Object 包含调用的方法的返回值或 null 对于一个构造函数,或 null 方法的返回类型是否为 void。 在调用方法或构造函数中之前, Invoke
// 检查以确定用户是否有访问权限,并验证参数是否有效。 中的元素 parameters 表示参数的数组声明与 ref 或 out 关键字也可以修改。
//
// 异常:
// T:System.Reflection.TargetException:
// obj 参数是 null 和该方法不是静态的。 - 或 - 该方法是不由声明或继承的类 obj。 - 或 - 调用静态构造函数,和 obj 既不是 null
// 服务器实例和声明构造函数的类的实例。
//
// T:System.ArgumentException:
// 一种 parameters 参数与该方法或反射了由该实例的构造函数的签名不匹配。
//
// T:System.Reflection.TargetParameterCountException:
// parameters 数组没有正确数目的参数。
//
// T:System.Reflection.TargetInvocationException:
// 调用的方法或构造函数引发异常。
//
// T:System.MethodAccessException:
// 调用方没有权限执行该方法或由当前实例表示的构造函数。
//
// T:System.InvalidOperationException:
// 声明该方法的类型是开放式泛型类型。 也就是说, System.Type.ContainsGenericParameters 属性将返回 true 声明类型。
public abstract object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture);
//
// 摘要:
// 指示两个 System.Reflection.MethodBase 对象是否相等。
//
// 参数:
// left:
// 要比较的第一个对象。
//
// right:
// 要比较的第二个对象。
//
// 返回结果:
// 如果 true 等于 left,则为 right;否则为 false。
public static bool operator ==(MethodBase left, MethodBase right);
//
// 摘要:
// 指示两个 System.Reflection.MethodBase 对象是否不相等。
//
// 参数:
// left:
// 要比较的第一个对象。
//
// right:
// 要比较的第二个对象。
//
// 返回结果:
// 如果 true 不等于 left,则为 right;否则为 false。
public static bool operator !=(MethodBase left, MethodBase right);
}
}