Как использовать отражение, чтобы получить конструктор по умолчанию? - PullRequest
1 голос
/ 13 июня 2010

Я пишу библиотеку, которая динамически генерирует производные классы абстрактных классов во время выполнения. Для конструктора производного класса требуется 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 Ответ

1 голос
/ 13 июня 2010

Разобрался. Я забыл флаг BindingFlags.Instance.

Странно то, что

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

возвращает ноль. Это неисправно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...