ConstructorInfo 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
发现类构造函数的属性,并提供对构造函数元数据的访问权限。
public ref class ConstructorInfo abstract : System::Reflection::MethodBase
public ref class ConstructorInfo abstract : System::Reflection::MethodBase, System::Runtime::InteropServices::_ConstructorInfo
public abstract class ConstructorInfo : System.Reflection.MethodBase
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class ConstructorInfo : System.Reflection.MethodBase, System.Runtime.InteropServices._ConstructorInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class ConstructorInfo : System.Reflection.MethodBase, System.Runtime.InteropServices._ConstructorInfo
type ConstructorInfo = class
inherit MethodBase
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type ConstructorInfo = class
inherit MethodBase
interface _ConstructorInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ConstructorInfo = class
inherit MethodBase
interface _ConstructorInfo
Public MustInherit Class ConstructorInfo
Inherits MethodBase
Public MustInherit Class ConstructorInfo
Inherits MethodBase
Implements _ConstructorInfo
- 继承
- 派生
- 属性
- 实现
示例
下面的示例使用 ConstructorInfo
GetConstructor 和 BindingFlags 来查找与指定的搜索条件匹配的构造函数。
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
MyClass1( int i ){}
};
int main()
{
try
{
Type^ myType = MyClass1::typeid;
array<Type^>^types = gcnew array<Type^>(1);
types[ 0 ] = int::typeid;
// Get the public instance constructor that takes an integer parameter.
ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, CallingConventions::HasThis, types, nullptr );
if ( constructorInfoObj != nullptr )
{
Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is: " );
Console::WriteLine( constructorInfoObj );
}
else
{
Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is not available." );
}
}
catch ( ArgumentNullException^ e )
{
Console::WriteLine( "ArgumentNullException: {0}", e->Message );
}
catch ( ArgumentException^ e )
{
Console::WriteLine( "ArgumentException: {0}", e->Message );
}
catch ( SecurityException^ e )
{
Console::WriteLine( "SecurityException: {0}", e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception: {0}", e->Message );
}
}
using System;
using System.Reflection;
using System.Security;
public class MyClass3
{
public MyClass3(int i) { }
public static void Main()
{
try
{
Type myType = typeof(MyClass3);
Type[] types = new Type[1];
types[0] = typeof(int);
// Get the public instance constructor that takes an integer parameter.
ConstructorInfo constructorInfoObj = myType.GetConstructor(
BindingFlags.Instance | BindingFlags.Public, null,
CallingConventions.HasThis, types, null);
if (constructorInfoObj != null)
{
Console.WriteLine("The constructor of MyClass3 that is a public " +
"instance method and takes an integer as a parameter is: ");
Console.WriteLine(constructorInfoObj.ToString());
}
else
{
Console.WriteLine("The constructor of MyClass3 that is a public instance " +
"method and takes an integer as a parameter is not available.");
}
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: " + e.Message);
}
catch (ArgumentException e)
{
Console.WriteLine("ArgumentException: " + e.Message);
}
catch (SecurityException e)
{
Console.WriteLine("SecurityException: " + e.Message);
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
}
}
Public Class MyClass1
Public Sub New(ByVal i As Integer)
End Sub
Public Shared Sub Main()
Try
Dim myType As Type = GetType(MyClass1)
Dim types(0) As Type
types(0) = GetType(Integer)
' Get the public instance constructor that takes an integer parameter.
Dim constructorInfoObj As ConstructorInfo = _
myType.GetConstructor(BindingFlags.Instance Or _
BindingFlags.Public, Nothing, _
CallingConventions.HasThis, types, Nothing)
If Not (constructorInfoObj Is Nothing) Then
Console.WriteLine("The constructor of MyClass1 that " + _
"is a public instance method and takes an " + _
"integer as a parameter is: ")
Console.WriteLine(constructorInfoObj.ToString())
Else
Console.WriteLine("The constructor MyClass1 that " + _
"is a public instance method and takes an " + _
"integer as a parameter is not available.")
End If
Catch e As ArgumentNullException
Console.WriteLine("ArgumentNullException: " + e.Message)
Catch e As ArgumentException
Console.WriteLine("ArgumentException: " + e.Message)
Catch e As SecurityException
Console.WriteLine("SecurityException: " + e.Message)
Catch e As Exception
Console.WriteLine("Exception: " + e.Message)
End Try
End Sub
End Class
注解
ConstructorInfo
用于发现构造函数的属性以及调用构造函数。 通过在 对象的 或 GetConstructor 方法返回GetConstructors的 Type 上ConstructorInfo
调用 Invoke 来创建对象。
注意
ConstructorInfo 继承自 MethodBase 可用于检查泛型方法的多个成员,例如 IsGenericMethod。 在 .NET Framework版本 2.0 构造函数不能是泛型构造函数,因此这些成员返回 false
或 null
。
实施者说明
从 ConstructorInfo
继承时,必须重写以下成员重载: Invoke(BindingFlags, Binder, Object[], CultureInfo)。
构造函数
ConstructorInfo() |
初始化 ConstructorInfo 类的新实例。 |
字段
ConstructorName |
表示存储在元数据中的类构造函数方法的名称。 该名称始终为“.ctor”。 此字段为只读。 |
TypeConstructorName |
表示存储于元数据中的类型构造函数方法的名称。 该名称始终为“.cctor”。 此属性为只读。 |
属性
Attributes |
获取与此方法关联的属性。 (继承自 MethodBase) |
CallingConvention |
获取一个值,该值指示此方法的调用约定。 (继承自 MethodBase) |
ContainsGenericParameters |
获取一个值,该值指示泛型方法是否包含未赋值的泛型类型参数。 (继承自 MethodBase) |
CustomAttributes |
获取包含此成员自定义属性的集合。 (继承自 MemberInfo) |
DeclaringType |
获取声明该成员的类。 (继承自 MemberInfo) |
IsAbstract |
获取一个值,该值指示此方法是否为抽象方法。 (继承自 MethodBase) |
IsAssembly |
获取一个值,该值指示此方法或构造函数的潜在可见性是否由 Assembly 描述;也就是说,此方法或构造函数只对同一程序集中的其他类型可见,而对该程序集以外的派生类型则不可见。 (继承自 MethodBase) |
IsCollectible |
获取一个值,该值指示此 MemberInfo 对象是否是包含在可回收的 AssemblyLoadContext 中的程序集的一部分。 (继承自 MemberInfo) |
IsConstructedGenericMethod |
发现类构造函数的属性,并提供对构造函数元数据的访问权限。 (继承自 MethodBase) |
IsConstructor |
获取一个值,该值指示此方法是否为构造函数。 (继承自 MethodBase) |
IsFamily |
获取一个值,该值指示此方法或构造函数的可见性是否由 Family 描述;也就是说,此方法或构造函数仅在其类和派生类内可见。 (继承自 MethodBase) |
IsFamilyAndAssembly |
获取一个值,该值指示此方法或构造函数的可见性是否由 FamANDAssem 描述;也就是说,此方法或构造函数可由派生类调用,但仅当这些派生类在同一程序集中时。 (继承自 MethodBase) |
IsFamilyOrAssembly |
获取一个值,该值指示此方法或构造函数的潜在可见性是否由 FamORAssem 描述;也就是说,此方法或构造函数可由派生类(无论其位置如何)和同一程序集中的类调用。 (继承自 MethodBase) |
IsFinal |
获取一个值,该值指示此方法是否为 |
IsGenericMethod |
获取一个值,该值指示方法是否为泛型方法。 (继承自 MethodBase) |
IsGenericMethodDefinition |
获取一个值,该值指示方法是否为泛型方法定义。 (继承自 MethodBase) |
IsHideBySig |
获取一个值,该值指示是否只有一个签名完全相同的同一种类的成员在派生类中是隐藏的。 (继承自 MethodBase) |
IsPrivate |
获取一个值,该值指示此成员是否是私有的。 (继承自 MethodBase) |
IsPublic |
获取一个值,该值指示这是否是一个公共方法。 (继承自 MethodBase) |
IsSecurityCritical |
获取一个值,该值指示当前方法或构造函数在当前信任级别上是安全关键的还是安全可靠关键的,因此可以执行关键操作。 (继承自 MethodBase) |
IsSecuritySafeCritical |
获取一个值,该值指示当前方法或构造函数在当前信任级别上是安全可靠关键的;即它是否可以执行关键操作并可以由透明代码访问。 (继承自 MethodBase) |
IsSecurityTransparent |
获取一个值,该值指示当前方法或构造函数在当前信任级别上是透明的,因此无法执行关键操作。 (继承自 MethodBase) |
IsSpecialName |
获取一个值,该值指示此方法是否具有特殊名称。 (继承自 MethodBase) |
IsStatic |
获取一个值,该值指示方法是否为 |
IsVirtual |
获取一个值,该值指示方法是否为 |
MemberType |
获取 MemberTypes 值,该值指示此成员是构造函数。 |
MemberType |
在派生类中重写时,获取 MemberTypes 值,该值指示成员类型 - 方法、构造函数、事件等。 (继承自 MemberInfo) |
MetadataToken |
获取一个值,该值标识元数据元素。 (继承自 MemberInfo) |
MethodHandle |
获取方法的内部元数据表示形式的句柄。 (继承自 MethodBase) |
MethodImplementationFlags |
获取指定方法实现特性的 MethodImplAttributes 标志。 (继承自 MethodBase) |
Module |
获取一个模块,在该模块中已经定义一个类型,该类型用于声明由当前 MemberInfo 表示的成员。 (继承自 MemberInfo) |
Name |
获取当前成员的名称。 (继承自 MemberInfo) |
ReflectedType |
获取用于获取 |
方法
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 |
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 MethodBase) |
GetCustomAttributes(Boolean) |
在派生类中重写时,返回应用于此成员的所有自定义属性的数组。 (继承自 MemberInfo) |
GetCustomAttributes(Type, Boolean) |
在派生类中重写时,返回应用于此成员并由 Type 标识的自定义属性的数组。 (继承自 MemberInfo) |
GetCustomAttributesData() |
返回 CustomAttributeData 对象列表,这些对象表示已应用到目标成员的特性相关数据。 (继承自 MemberInfo) |
GetGenericArguments() |
返回 Type 对象的数组,这些对象表示泛型方法的类型实参或泛型方法定义的类型形参。 (继承自 MethodBase) |
GetHashCode() |
返回此实例的哈希代码。 |
GetHashCode() |
返回此实例的哈希代码。 (继承自 MethodBase) |
GetMethodBody() |
在派生类中重写后,获取 MethodBody 对象,该对象提供对 MSIL 流、局部变量和当前方法的异常的访问。 (继承自 MethodBase) |
GetMethodImplementationFlags() |
在派生的类中重写时,返回 MethodImplAttributes 标志。 (继承自 MethodBase) |
GetParameters() |
当在派生类中重写时,获取指定的方法或构造函数的参数。 (继承自 MethodBase) |
GetType() |
发现类构造函数的属性,并提供对构造函数元数据的访问权限。 |
GetType() |
发现类构造函数的属性,并提供对构造函数元数据的访问权限。 (继承自 MethodBase) |
HasSameMetadataDefinitionAs(MemberInfo) |
发现类构造函数的属性,并提供对构造函数元数据的访问权限。 (继承自 MemberInfo) |
Invoke(BindingFlags, Binder, Object[], CultureInfo) |
在派生类中实现时,在指定 |
Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) |
当在派生类中重写时,调用具有给定参数的反射的方法或构造函数。 (继承自 MethodBase) |
Invoke(Object, Object[]) |
使用指定参数调用由当前实例表示的方法或构造函数。 (继承自 MethodBase) |
Invoke(Object[]) |
调用由具有指定参数的实例反映的构造函数,为不常用的参数提供默认值。 |
IsDefined(Type, Boolean) |
在派生类中重写时,指示是否将指定类型或其派生类型的一个或多个特性应用于此成员。 (继承自 MemberInfo) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
运算符
Equality(ConstructorInfo, ConstructorInfo) |
指示两个 ConstructorInfo 对象是否相等。 |
Inequality(ConstructorInfo, ConstructorInfo) |
指示两个 ConstructorInfo 对象是否不相等。 |
显式接口实现
扩展方法
GetCustomAttribute(MemberInfo, Type) |
检索应用于指定成员的指定类型的自定义特性。 |
GetCustomAttribute(MemberInfo, Type, Boolean) |
检索应用于指定成员的指定类型的自定义特性,并可选择检查该成员的上级。 |
GetCustomAttribute<T>(MemberInfo) |
检索应用于指定成员的指定类型的自定义特性。 |
GetCustomAttribute<T>(MemberInfo, Boolean) |
检索应用于指定成员的指定类型的自定义特性,并可选择检查该成员的上级。 |
GetCustomAttributes(MemberInfo) |
检索应用于指定成员的自定义特性集合。 |
GetCustomAttributes(MemberInfo, Boolean) |
检索应用于指定成员的自定义特性集合,并可选择检查该成员的上级。 |
GetCustomAttributes(MemberInfo, Type) |
检索应用于指定成员的指定类型的自定义特性集合。 |
GetCustomAttributes(MemberInfo, Type, Boolean) |
检索应用于指定成员的指定类型的自定义特性集合,并可选择检查该成员的上级。 |
GetCustomAttributes<T>(MemberInfo) |
检索应用于指定成员的指定类型的自定义特性集合。 |
GetCustomAttributes<T>(MemberInfo, Boolean) |
检索应用于指定成员的指定类型的自定义特性集合,并可选择检查该成员的上级。 |
IsDefined(MemberInfo, Type) |
确定是否将指定类型的任何自定义属性应用于指定的成员。 |
IsDefined(MemberInfo, Type, Boolean) |
指示一个指定类型的自定义特性是否应用于一个指定的数字,并选择性地应用于其的上级。 |
GetMetadataToken(MemberInfo) |
获取给定成员的元数据令牌(如果可用)。 |
HasMetadataToken(MemberInfo) |
返回表示元数据令牌是否可用于指定的成员的值。 |
适用于
线程安全性
此类型是线程安全的。