事件的响应:
/// <summary>/// 生成形如/// this.button1.Click += new System.EventHandler(this.button1_Click);/// 的代码/// </summary>public static CodeStatement GenerateAttachEventStatement(string ctrlName, string eventType, string eventName){return new CodeAttachEventStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), ctrlName),eventName,new CodeObjectCreateExpression(eventType,new CodeExpression[]{new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), ctrlName+"_"+eventName)}));}
/// <summary>/// 生成形如/// this.button1.Click -= new System.EventHandler(this.button1_Click);/// 的代码/// </summary>public static CodeStatement GenerateRemoveEventStatement(string ctrlName, string eventType, string eventName){return new CodeRemoveEventStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), ctrlName),eventName,new CodeObjectCreateExpression(eventType,new CodeExpression[]{new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), ctrlName+"_"+eventName)}));}
生成文件注释,例如Dispose方法的注释可以这样生成:
DisposeMethod.Comments.Add(new CodeCommentStatement("<summary>\n 清理所有正在使用的资源。\n </summary>\n <param name=\"disposing\">如果应释放托管资源,为 true;否则为 false。</param>", true));
生成注释为:
/// <summary>/// 清理所有正在使用的资源。/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>protected override void Dispose(bool disposing){...}
最后一步,将CodeDom生成到C#文件需要使用到CSharpCodeProvider。
代码:
using Microsoft.CSharp;public static void GenerateCSharpCode(CodeCompileUnit compileunit, string compileName){CSharpCodeProvider provider = new CSharpCodeProvider();string sourceFile = compileName + "." + provider.FileExtension;IndentedTextWriter tw = new IndentedTextWriter(new StreamWriter(sourceFile, false), " ");//设置代码生成选项CodeGeneratorOptions geneop = new CodeGeneratorOptions();//括号另起一行geneop.BracingStyle = "C";//类成员之间空行geneop.BlankLinesBetweenMembers = true;//按类成员添加顺序输出,否则默认类成员在方法前geneop.VerbatimOrder = true;provider.GenerateCodeFromCompileUnit(compileunit, tw, geneop);tw.Close();}
完。
————————————————
版权声明:本文为CSDN博主「莱昂纳多达芬奇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/davinciyxw/article/details/7859775
