逍遥游

一直在想,怎样路好走一点,一直想,一直在崎岖中徘徊。
posts - 60, comments - 20, trackbacks - 0, articles - 28
   :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

C#中如何动态运行代码

Posted on 2007-06-08 09:13 逍遥游 阅读(128) 评论(0)  编辑 收藏 所属分类: .Net技术

private void Compiler(string code)
        {
            CompilerParameters vCompilerParameters = new CompilerParameters();
            vCompilerParameters.GenerateExecutable = false;
            vCompilerParameters.GenerateInMemory = true;
            vCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            string vSource =
                "using System.Windows.Forms;\n" +
                "public class Temp\n" +
                "{\n" +
                "    public void Test()\n" +
                "    {\n" +
                "         " + code + "\n" +
                "    }\n" +
                "}\n";
            CompilerResults vCompilerResults =
                CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource(vCompilerParameters, vSource);

            Assembly vAssembly = vCompilerResults.CompiledAssembly;
            object vTemp = vAssembly.CreateInstance("Temp");
            MethodInfo vTest = vTemp.GetType().GetMethod("Test");
            vTest.Invoke(vTemp, null);
        }

 

string code = "int sum = 0;\nfor(int i = 0; i < 100; i++)\n{\nsum += i;\n}\nMessageBox.Show(sum.ToString());";
            Compiler(code);


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
成果网帮您增加网站收入


相关链接: