C#动态执行代码(改编)
来源:互联网 发布:云计算相关公司 编辑:程序博客网 时间:2024/04/26 13:38
http://www.cnblogs.com/zlinke/archive/2011/01/28/1946785.html
/* 初学C#,好多概念不太清晰,手头项目需要用到动态代码执行,网上搜了一堆,觉得下面这个比较合我用,就拿过来改了一下.
本来还应该加上代码正确性检测的(目前的情况是,如果动态代码有错误,实际反映出来的错误信息有可能是"未能加载程序或文件集....或它的某一个依赖项,系统找不到指定的文件", 结果造成被误导了,汗.)
先凑合着用. 到后面再修改增加其他功能.
// 摘录自 http://www.cnblogs.com/kidfruit/ 地精实验室
*/
using System;using System.Collections.Generic;using System.Reflection;using System.Text;using System.CodeDom;using System.CodeDom.Compiler;namespace Dynamic{ #region DynamicClass 动态运行代码类 /// <summary> /// 动态运行代码类 /// </summary> public class DynamicClass { #region Exec (code) 动态运行代码 /// <summary> /// 动态运行代码 /// </summary> /// <param name="code">动态代码(主体即可),系统会自动加上包含文件,名字空间,临时运行类名,临时运行函数名</param> /// <returns>装箱返回对象</returns> public static object Exec(string code) { string strNamespace = "DynamicClass"; string strDynamicClass = "Temp_Dynamic_Exec"; string strDynamicFuncation = "Temp_Dynamic_ExecScript"; CompilerParameters vCompilerParameters = new CompilerParameters(); vCompilerParameters.GenerateExecutable = false; vCompilerParameters.GenerateInMemory = true; vCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll"); code += "/n return /"/";/n"; string vSource = "using System;/n" + "using System.Windows.Forms; /n" + "namespace " + strNamespace + "/n{/n" + " public class " + strDynamicClass + "/n" + " {/n" + " public object " + strDynamicFuncation + "()/n" + " {/n" + " " + " " + code + "/n" + " }/n" + " }/n}/n"; CompilerResults vCompilerResults = CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource(vCompilerParameters, vSource); Assembly vAssembly = vCompilerResults.CompiledAssembly; object vTemp = vAssembly.CreateInstance(strNamespace + "." + strDynamicClass); MethodInfo vTest = vTemp.GetType().GetMethod(strDynamicFuncation); return vTest.Invoke(vTemp, null); } #endregion } #endregion}
- C#动态执行代码(改编)
- C#动态执行代码(改编)
- C#动态执行代码
- C#动态执行代码
- C# 动态代码执行
- C# 动态代码执行
- C#动态执行代码
- 动态编译执行c#代码
- 动态编译执行C#代码
- 动态编译执行C#代码
- C#动态编译、执行代码
- C#中动态执行代码
- C#动态编译、执行代码
- C#动态执行字符串(动态创建代码)
- C#动态执行字符串(动态创建代码)
- C#中动态执行代码,执行字符串中的代码
- [转]动态编译执行c#代码
- 如何用C#动态编译、执行代码
- C#中异步和多线程的区别
- 12.5.2 Image的内部机制
- WCF开发实战系列一:创建第一个WCF服务
- 人脑中的twitter应用与转发现象
- 12.5.2双缓冲区技术
- C#动态执行代码(改编)
- 互联网进化和互联网大脑,美国落后中国三年
- 12.6 Canvas
- 12.7 菜单
- 通过外接程序将Outlook邮件导出成Word文档
- TYVJ 1064 新三国争霸
- 12.9 Dialog和FileDialog类
- TYVJ 1064 新三国争霸
- TYVJ 1064 新三国争霸