2010-06-13 48 views
0

我正在编写一个库,可以在运行时动态生成派生类的抽象类。派生类的构造函数需要基类构造函数的一个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构造,即使测试是不是抽象的。

回答

0

想通了。我忘记了BindingFlags.Instance标志。

奇怪的是,

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

返回null。它有缺陷吗?

相关问题