日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CodeDom 笔记整理

發布時間:2025/6/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeDom 笔记整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習博客園 lichdr的動態生成與編譯系列文章http://www.cnblogs.com/lichdr/category/12610.html

CodeCompileUnit compunit=new CodeCompileUnit() 生成可編譯的單元。

compunit.Namespaces.Add(sample) 添加名稱空間

命名空間

CodeNamespace sample=new CodeNamespace("Sample") 定義一個名為Sample的命名空間

sample.Imports.Add(導入名稱空間)

sample.Types.Add(添加類型)

方法

CodeMemberMethod method=new CodeMemberMethod()

method.Comments.Add(new CodeCommentStatement("注釋"))

method.Name=""

method.Attributes=MemberAttributes.Private|MemberAttributes.Static

method.Parameters.Add(new CodePatameterDeclarationExpression(typeof(int),"n"))

參數\變量應用

CodeVariableReferenceExpression("i") 變量引用

CodeArgumentReferenceExpression("n") 參數引用

賦值語句

CodeAssignStatement assignstatement=new CodeAssignStatement(new CodeVariableReferenceExpression("i"),new CodeBinaryOperatorExpression(...))

變量聲明

CodeVariableDeclarationStatement VarF2=new CodeVariableDeclarationStatement(typeof(int),"F2",new CodePrimitiveExpression(1));

二元操作表達式

CodeBinaryOperatorExpression test =new CodeBinaryOperatorExpression(new CodeVariableReferenceExpression("i"),CodeBinaryOperatorType.LessThanOrEqual,new CodeArgumentReferenceExpression("n"));? i<=1

CodeTypeDeclaration MyClass=new CodeTypeDeclaration("DemoClass") 定義一個名為DemoClass的類

CodeEntryPointMethod Start = new CodeEntryPointMethod() 定義程序入口點,Main

MyClass.Members.Add(Start)

Start.Statements.Add(statement) 方法添加語句

構造函數

屬性

CodeMemberProperty MyProperty=new CodeMemberProperty()

MyProperty.Name=""

MyProperty.Type=new CodeTypeReference("System.Int32");

MyProperty.Attributes=MemberAttributes.Public|MemberAttributes.Final;

MyProperty.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"myField")));

MyProperty.SetStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"myField"),new CodePropertySetValueReferenceExpression()));

?

索引器

字段

CodeMemberField myField=new CodeMemberField("System.Int32","myField"); 產生private int myField

CodeMemberField myArray=new CodeMemberField("System.Int32[]","myArray")

myArray.Attributes=MemberAttributes.Private

myArray.InitExpression=new CodeArrayCreateExpression("System.Int32",10);

產生private int[] myArray=new int[10]

調用方法

CodeMethodInvokeExpression cs = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("System.Console"),"WriteLine",new CodePrimitiveExpression("Hello World!"));??? 調用方法的語句 System.Console.WriteLine("Hello World")

CodeMethodInvokeExpression (CodeMethodReferenceExpression method,params CodeExpression[] parameters)

for循環

CodeIterationStatement forloop=new CodeIterationStatement(初始表達式一個變量聲明,循環測試一個二元操作表達式,循環遞增語句CodeAssignStatement,循環體內的語句CodeStatement[])

TryCatch語句

if 條件語句

CodeConditionStatement(CodeExpression condition//條件判斷一般為二元操作表達式,CodeStatement[] trueStatements,CodeStatements[] falseStatements)

生成cs文件、dll、exe

StreamWriter sw = new StreamWriter("mytwo.cs",false);

new CSharpCodeProvider().GenerateCodeFromCompileUnit(compunit, sw, new CodeGeneratorOptions());

sw.Close();

CompilerParameters cp = new CompilerParameters();

cp.GenerateExecutable = true;

cp.ReferencedAssemblies.Add("System.dll");

cp.OutputAssembly = "mytwo.exe";

CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromFile(cp, "mytwo.cs");

?

?

轉載于:https://www.cnblogs.com/zscflying/archive/2013/04/11/3014805.html

總結

以上是生活随笔為你收集整理的CodeDom 笔记整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。