受保护的构造函数-在GetConstructors()中没有显示

本文关键字:显示 GetConstructors 构造函数 受保护 | 更新日期: 2023-09-27 18:16:53

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

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)时,返回的数组中有零项。有人知道我哪里做错了吗?

谢谢

受保护的构造函数-在GetConstructors()中没有显示

既然您自己正在通过BindingFlags,那么您一定不要忘记在必要时包括BindingFlags.Instance(在这种情况下,它是)。

包含它将工作:

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

查看效果