Защищенный конструктор - не отображается с GetConstructors () - PullRequest
1 голос
/ 05 декабря 2011

У меня есть класс с методом фабрики и защищенным конструктором, определенным для нескольких аргументов.

public class MyClass
{
    protected void MyClass(int agr1, int arg2)
    {
      //set private backing fields for public readonly properties
    }

    public static MyClass From(int arg1, int arg2)
    {
          return new MyClass(arg1, arg2); 
    }
} 

Тем не менее, когда я использую typeof(MyClass).GetConstructors(BindingFlags.NonPublic), возвращаемый массив содержит ноль элементов. Кто-нибудь видит, что я делаю не так?

Спасибо

1 Ответ

12 голосов
/ 05 декабря 2011

Поскольку вы передаете BindingFlags самостоятельно, вы не должны забыть включить BindingFlags.Instance при необходимости (что в данном случае так и есть).

Включая это будет работать:

var flags = BindingFlags.NonPublic | BindingFlags.Instance
var ctors = typeof(MyClass).GetConstructors(flags);

См. Это в действии .

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