我有一個帶有2個構造函數的公共類:默認(不帶參數),它是內部的,不同的是公共的。 默認構造函數使用一些默認值調用另一個構造函數。如何防止C#編譯器刪除內部構造函數
我使用反射調用內部構造函數,所以它不會在靜態組件中的任何位置使用(僅通過反射)。
當我做了反思電話,我得到:
System.MissingMethodException
Message=No parameterless constructor defined for this object.
我知道兩種解決方法的:
- 使構造公共(但我不希望這樣的用戶裝配使用它)。
- 從一些公共方法調用構造函數(我有很多這樣的類,所以我不想寫很多這個醜陋的無用代碼)。
對這個問題有什麼更好的解決辦法?
值得一提的是,如果默認的構造函數是公共的,我不會得到這個異常。
謝謝,
波阿斯。
C#編譯器不會刪除代碼。使用ildasm.exe來說服你自己。 –
向我們顯示導致此異常的代碼。你在反射調用中提供了正確的'BindingFlags'嗎? – AakashM
謝謝,我不知道ildasm。我可以在那裏找到默認的構造函數,但我仍然得到一個MissingMethodException。如果它是公開的,我不明白。 – brickner