受保护的构造函数 - 不显示GetConstructors()

时间:2011-12-05 15:04:00

标签: c# reflection

我有一个带有工厂方法的类和一个受保护的构造函数,它被定义为接受一些参数。

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 个答案:

答案 0 :(得分:11)

由于您自己传递了BindingFlags,所以如果有必要,您不能忘记包括BindingFlags.Instance(在这种情况下,它是)。

包括它将起作用:

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

<强> See it in action