天天看点

CodeDom系列四--Code生成

      我们利用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!")
CodeDom系列四--Code生成