我們利用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!")
運作結果:

本文轉自破狼部落格園部落格,原文連結:http://www.cnblogs.com/whitewolf/archive/2010/07/05/1771138.html,如需轉載請自行聯系原作者