加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C#中动态执行C#脚本

(2007-03-01 15:48:07)

using Microsoft.CSharp;

using System.CodeDom.Compiler;

using System.Reflection;

 

private void button1_Click(object sender, EventArgs e)

{

    ICodeCompiler vCodeCompiler = new CSharpCodeProvider().CreateCompiler();

    CompilerParameters vCompilerParameters = new CompilerParameters();

    vCompilerParameters.GenerateExecutable = false;

    vCompilerParameters.GenerateInMemory = true;

    string vSource =

        "public class Temp\n" +

        "{\n" +

        "   public double Test(double A, double B)\n" +

        "   {\n" +

        "       return A / B;\n" +

        "   }\n" +

        "}\n";

    CompilerResults vCompilerResults =

        vCodeCompiler.CompileAssemblyFromSource(vCompilerParameters, vSource);

    Assembly vAssembly = vCompilerResults.CompiledAssembly;

    object vTemp = vAssembly.CreateInstance("Temp");

    MethodInfo vTest = vTemp.GetType().GetMethod("Test");

    for (int i = 1; i < 100; i++)

    {

        object[] vParams = { 1, i };

        object vDouble = vTest.Invoke(vTemp, vParams);

        textBox1.AppendText(vDouble.ToString() + "\r\n");

    }

}

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有