受保护的构造函数 - 未使用 GetConstructors() 显示

发布于 2024-12-19 17:34:54 字数 435 浏览 2 评论 0原文

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

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) 时,返回的数组中包含零个项目。有人看到我做错了什么吗?

谢谢

I have a class with a factory method and a protected constructor defined to take a few arguments.

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); 
    }
} 

Yet when I use typeof(MyClass).GetConstructors(BindingFlags.NonPublic) the array returned has zero items in it. Anyone see what I'm doing wrong?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

失而复得 2024-12-26 17:34:54

由于您自己传递 BindingFlags,因此一定不要忘记在必要时包含 BindingFlags.Instance(在本例中确实如此)。

包含它将会起作用:

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

查看它的实际效果

Since you are passing the BindingFlags yourself, you must not forget to include BindingFlags.Instance if necessary (which in this case, it is).

Including it will work:

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

See it in action.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文