我们利用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!")