2010-04-03 57 views
1

在開始之前,讓我告訴我的經驗:我對C#.NET,Web服務,XML部分以及其他幾個經驗豐富。反射對我來說是新東西,雖然我已經廣泛閱讀並嘗試了一些實驗代碼,但沒有使用反射做出任何偉大的事情通過Reflection.Emit生成保存類型作爲代碼文件(.cs)而不是將其保存在.dll文件中

我檢查了many examples我們如何在運行時創建Type,然後哪些可以保存在程序集(.dll)文件中。在我看到的所有例子中,關於將創建的類型保存在.dll文件而不是代碼文件中。沒有任何方法可以創建出反射代碼文件嗎?

我需要創建代碼文件,因爲我想分發代碼而不是編譯程序集。我想要做的是類似xsd.exe的事情,要麼吐出.dll或代碼文件(以任何語言)。

是不是有什麼辦法可以創建一個代碼文件,因爲大多數我能找到的地方是

AssemblyBuilder ab = System.AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save); 

,然後最後

ab.Save("QuoteOfTheDay.dll"); 

回答

4

.NET框架中沒有內置反彙編程序。您可以使用Reflector將您發送的IL轉換爲其支持的其中一種源代碼語言。這不會很有可能沒有問題,Reflector被設計用於將由編譯器生成的代碼轉換回源代碼。與System.Reflection.Emit提供的任何其他方法不同,編譯器對它們產生的IL進行保守。

如果你想要源代碼,那麼你最好先生成它。使用System.CodeDom。這就是System.Xml.Serialization使用的。

相關問題