是否可以在对象/方法的上下文中动态编译和执行C#代码片段?

时间:2018-08-19 20:15:04

标签: c# compiler-construction

这是此问题的扩展:Is it possible to dynamically compile and execute C# code fragments?

但是可以引用某个对象的字段,属性和方法吗?例如:

public class SomeClass
{
    public int a, b;

    public int SomeMethod(int a, int b, int c)
    {
        return a + b + c;
    }

    public void Execute()
    {
        int c = 3;
        string code = "a = b = 2; int result = SomeMethod(a, b, c);";
        // Compile and execute code here
    }
}

代码显然在功能上没有任何意义,但这只是一个例子。

2 个答案:

答案 0 :(得分:0)

我不知道一种方法,但是您可以调用string tmp = Path.GetTempFile()创建一个临时文件,然后执行code = "void Main(string[] args){int a = b = 2; int result = SomeMethod(a, b, c); File.WriteAllBytes(\"" + tmp + "\", BitConverter.GetBytes(result));"保存结果。然后,您可以使用BitConverter.ToInt32(File.ReadAllBytes(tmp))加载它。

答案 1 :(得分:0)

我认为您正在寻找Lambda Expression Serializers之类的东西 DynamicExpresso