我們利用codedom技術生成了一些列codedom expression ,接下來的任務就是編譯和生成,生成c#、vb或者是.net平台支援語言,編譯程式集(dll或者是exe)。 codedomprovider:在2.0後提供了codedomprovider.createprovider(string language)的工廠類,取代以前的 microsoft.visualbasic.vbcodeprovider、 microsoft.csharp.csharpcodeprovider的建立codedomprovider的方式,現在我們可以僅用一句codedomprovider.createprovider("c#")方式就可以建立csharpcodeprovider。 有了codedomprovider我們就可以利用provider生成對應語言的源代碼:icodegenerator :代碼生成抽象,可以用provider.creategenerator()取得;這個類給我提供了代碼生成的方法有: generatecodefromcompileunit:從編譯單元生成code generatecodefromexpression:從表達式生成code generatecodefrommember:從類型成員member生成code generatecodefromnamespace:從命名空間生成code generatecodefromstatement:從statement語句生成code generatecodefromtype:從類型type生成code。 其實在codedomprovider也通過了同樣的方法,個人習慣于用codedomprovider的方法。 還有就是system.io.textwriter的參數,這個參數我們可以通過輸出file檔案的streamwrite或者是stringbuilder的stringwrite。故名思意,其輸出的方式和位置不同。 例如: codegeneratoroptions geneoptions = new codegeneratoroptions();//代碼生成選項 geneoptions.blanklinesbetweenmembers = false; geneoptions.bracingstyle = "c"; // c風格 geneoptions.elseonclosing = true; geneoptions.indentstring = " "; 這裡代碼生成的全部就完成了,我們來一個簡單的擔待生成demo:功能就是輸出一句話: system.console.writeline("tes tcodedom generate!")