如何使用反射来获取默认构造函数?

时间:2010-06-13 03:14:42

标签: .net reflection constructor default abstract

我正在编写一个库,它在运行时动态生成抽象类的派生类。派生类的构造函数需要基类构造函数的MethodInfo,以便它可以调用它。但是,出于某种原因,Type.GetConstructor()会返回null。例如:

abstract class Test
{
    public abstract void F();
}

public static void Main(string[] args)
{
    ConstructorInfo constructor = typeof(Test).GetConstructor(
        BindingFlags.NonPublic | BindingFlags.Public, 
        null, System.Type.EmptyTypes, null); // returns null!
}

请注意GetConstructor返回null,即使我在Test中明确声明了构造函数,即使Test不是抽象的。

1 个答案:

答案 0 :(得分:0)

想出来。我忘记了BindingFlags.Instance旗帜。

奇怪的是那个

ConstructorInfo constructor = typeof(Test).GetConstructor(System.Type.EmptyTypes);

返回null。它有缺陷吗?