2010-06-13 1 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); 

возвращает нулевое значение. Это дефект?

 Смежные вопросы

  • Нет связанных вопросов^_^