System.Type.GetConstructor 方法 (Type[])

方法描述

搜索其参数与指定数组中的类型匹配的公共实例构造函数。

语法定义(C# System.Type.GetConstructor 方法 (Type[]) 的用法)

[ComVisibleAttribute(true)]
public ConstructorInfo GetConstructor(
	Type[] types
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
types System-Type[] 表示需要的构造函数的参数个数、顺序和类型的 Type 对象的数组。- 或 -Type 对象的空数组,用于获取不带参数的构造函数。这样的空数组由 static 字段 Type.EmptyTypes 提供。
返回值 System.Reflection.ConstructorInfo 为表示某个公共实例构造函数(该构造函数的参数与参数类型数组中的类型匹配)的对象(如果找到的话);否则为 null。

提示和注释

此方法重载寻找公共实例构造函数,并且不能用于获取类初始值设定项 (.cctor)。 若要获取类初始值设定项,请使用采用 BindingFlags 的重载并指定 BindingFlags.Static。 | BindingFlags.NonPublic (isual Basic 中的 BindingFlags.StaticOrBindingFlags.NonPublic)。 还可以使用 TypeInitializer 属性获取类初始值设定项。

如果请求的构造函数是非公共的,则此方法返回 null。

注意

查找构造函数和方法时不能省略参数。 只能在调用时省略参数。

如果当前 Type 表示构造泛型类型,则此方法将返回 ConstructorInfo,并且其类型形参替换为相应的类型实参。 如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法始终返回 null。

System.Type.GetConstructor 方法 (Type[])例子

下面的示例获取 MyClass 的类型,获取 ConstructorInfo 对象,然后显示构造函数签名。

using System;
using System.Reflection;
using System.Security;

public class MyClass1
{
    public MyClass1(){}
    public MyClass1(int i){}

    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass1);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the constructor that takes an integer as a parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(types);
            if (constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that takes an " + 
                    "integer as a parameter is: "); 
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that takes an integer " +
                    "as a parameter is not available."); 
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception caught.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
    }
}

异常

异常 异常描述
ArgumentNullException
  • types 为 null。
  • types 中的一个元素为 null。
ArgumentException types 是多维的。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。