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

Tim*_*eld 1 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); 
    }
} 
Run Code Online (Sandbox Code Playgroud)

然而,当我使用typeof(MyClass).GetConstructors(BindingFlags.NonPublic)返回的数组时,其中包含零项.有谁看到我做错了什么?

谢谢

Jon*_*Jon 12

既然你正在经过BindingFlags自己,你必须忘记BindingFlags.Instance在必要时包括(在这种情况下,它是).

包括它将起作用:

var flags = BindingFlags.NonPublic | BindingFlags.Instance
var ctors = typeof(MyClass).GetConstructors(flags);
Run Code Online (Sandbox Code Playgroud)

看到它在行动.