返回首页

c#中的CodeDOM技术入门

时间:2009-06-11 09:24来源:未知 作者:laohan 点击:
什么是CodeDom技术呢。CodeDOM的全称是代码文档对象模型(Code Document Object Model)。整个CodeDOM就是一张对象图(object graph)。它用这张图中的所有对象描述了面向对象语言中的几乎所有的语法现象。
  

我们使用System.CodeDom ,System.CodeDom.Compiler就可以自动生成代码,这样就能实现动态编译的效果。动态编译后,通过反射(Reflection机制),就可以运行。

构造编译器的编译参数在CompilerParameters设置: 

CompilerOptions 用于设置编译器命令行参数
IncludeDebugInformation 用于指示是否在内存在生成Assembly
GenerateInMemory 用于指示是否在内存在生成Assembly
GenerateExecutable 用于指示生成的Assembly类型是exe还是dll
OutputAssembly 用于指示生成的程序文件名(仅在GenerateInMemory为false的情况)
ReferencedAssemblies 用于添加引用Assembly

例如:CompilerParameters parameter = new CompilerParameters();parameter .ReferencedAssemblies.Add("System.dll");

编译需要由指定语言的CodeDomProvider生成:

vb.net  Microsoft.VisualBasic.VBCodeProvider
C# Microsoft.CSharp.CSharpCodeProvider
jscript Microsoft.JScript.JScriptCodeProvider
J# Microsoft.VJSharp.VJSharpCodeProvider

以C#为例,要创建C#编译器,代码如下: 

CodeDomProvider theProvider= (ICodeCompiler) new Microsoft.CSharp.CSharpCodeProvider();

编译源代码相当简单,只需一条语句就搞定了:

CompilerResults compilerResults  = compiler.CompileAssemblyFromSource(this.theParameters, this.SourceText); 

执行后,可以从compilerResults取得以下内容: 

NativeCompilerReturnValue 编译结果,用于检查是否成功
Errors 编译时产生的错误和警告信息
CompiledAssembly

 

在接下来中我们来研究下如何使用CodeDom方式来动态生成可执行代码

顶一下
(5)
71.4%
踩一下
(2)
28.6%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容