微软CodeDom模型学习笔记(二)

本文是关于微软CodeDom模型的学习笔记,主要探讨了CodeDom如何作为跨语言代码生成和编译的工具,以及在异常处理、数据库操作和测试工作中的应用。
摘要由CSDN通过智能技术生成

 

2,codeProvider.GenerateCodeFromStatement方法

为指定的代码文档对象模型 (CodeDOM) 语句生成代码,并使用指定的选项将代码发送到指定的文本编写器。

通俗理解:CodeAssignStatement输出为代码字符串

测试各种CodeStatement (语句)

可以用这些语句模型一一地对应生成的对应语言的代码

a, CodeAssignStatement表示简单的赋值语句。

CodeAssignStatement ret = new CodeAssignStatement();

CodeVariableReferenceExpression left = new CodeVariableReferenceExpression();

left.VariableName = "i";

ret.Left = left;

ret.Right = new CodePrimitiveExpression(33);

codeProvider.GenerateCodeFromStatement(ret, tw, options);

输出的代码字符串为:i = 33;

把右边换成变量的应用CodeVariableReferenceExpression

CodeAssignStatement ret = new CodeAssignStatement();

CodeVariableReferenceExpression left = new CodeVariableReferenceExpression();

left.VariableName = "i";

ret.Left = left;

CodeVariableReferenceExpression right = new CodeVariableReferenceExpression();

right.VariableName = "j";

ret.Right = right;

codeProvider.GenerateCodeFromStatement(ret, tw, options);

输出的代码字符串为:i = j;

把右边换成函数调用的返回结果CodeMethodInvokeExpression

CodeAssignStatement ret = new CodeAssignStatement();

CodeVariableReferenceExpression left = new CodeVariableReferenceExpression();

left.VariableName = "i";

ret.Left = left;

CodeMethodInvokeExpression right = new CodeMethodInvokeExpression();

right.Method = new CodeMethodReferenceExpression();

right.Method.TargetObject = new CodeVariableReferenceExpression("myField");

right.Method.MethodName = "TestMethod";

right.Parameters.Add(new CodePrimitiveExpression(true));

ret.Right = right;

codeProvider.GenerateCodeFromStatement(ret, tw, options);

输出的代码字符串为:i = myField.TestMethod(true);

b, 表示向事件附加事件处理程序委托的语句。

CodeAttachEventStatement ret = new CodeAttachEventStatement();

CodeEventReferenceExpression myEvent = new CodeEventReferenceExpression();

myEvent.TargetObject = new CodeThisReferenceExpression();

myEvent.EventName = "Click";

ret.Event = myEvent;

CodeDelegateCreateExpression myDelegate = new CodeDelegateCreateExpression();

myDelegate.TargetObject = new CodeThisReferenceExpression();

myDelegate.MethodName = "On_Click";

myDelegate.DelegateType = new CodeTypeReference(typeof(EventHandler<EventArgs>));

ret.Listener = myDelegate;

codeProvider.GenerateCodeFromStatement(ret, tw, options);

输出的代码字符串为:this.Click += new System.EventHandler<System.EventArgs>(this.On_Click);

c, CodeCommentStatement表示由单个注释构成的语句。

CodeCommentStatement ret = new CodeComm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值