【发布时间】:2011-11-05 09:17:08
【问题描述】:
我有一个带有 2 个构造函数的公共类:默认(不带参数)是内部的,另一个是公共的。 默认构造函数使用一些默认值调用另一个构造函数。
我使用反射调用内部构造函数,因此它不会在程序集中的任何地方静态使用(仅通过反射)。
当我进行反射调用时,我得到:
System.MissingMethodException
Message=No parameterless constructor defined for this object.
我知道两种解决方法:
- 将构造函数公开(但我不希望此程序集的用户使用它)。
- 从一些公共方法调用构造函数(我有很多这样的类,所以我不想写很多这种丑陋无用的代码)。
这个问题有更好的解决方案吗?
值得一提的是,如果默认构造函数是公共的,我不会得到那个异常。
谢谢,
波阿斯。
【问题讨论】:
-
C# 编译器不会删除代码。使用 ildasm.exe 说服自己。
-
向我们展示导致此异常的代码。您是否在反射调用中提供了正确的
BindingFlags? -
谢谢,我不知道 ildasm。我可以在那里找到默认构造函数,但我仍然得到一个 MissingMethodException。如果它是公开的,我不明白。
-
你究竟是什么时候收到这个错误的?
-
当我使用反射调用时。
标签: c# reflection compiler-optimization internal