我有一个带有2个构造函数的公共类:默认(不带参数),它是内部的,不同的是公共的。 默认构造函数使用一些默认值调用另一个构造函数。如何防止C#编译器删除内部构造函数
我使用反射调用内部构造函数,所以它不会在静态组件中的任何位置使用(仅通过反射)。
当我做了反思电话,我得到:
System.MissingMethodException
Message=No parameterless constructor defined for this object.
我知道两种解决方法的:
- 使构造公共(但我不希望这样的用户装配使用它)。
- 从一些公共方法调用构造函数(我有很多这样的类,所以我不想写很多这个丑陋的无用代码)。
对这个问题有什么更好的解决办法?
值得一提的是,如果默认的构造函数是公共的,我不会得到这个异常。
谢谢,
波阿斯。
C#编译器不会删除代码。使用ildasm.exe来说服你自己。 –
向我们显示导致此异常的代码。你在反射调用中提供了正确的'BindingFlags'吗? – AakashM
谢谢,我不知道ildasm。我可以在那里找到默认的构造函数,但我仍然得到一个MissingMethodException。如果它是公开的,我不明白。 – brickner