将参数传递给方法并读取返回值?

时间:2016-07-08 16:22:27

标签: c# roslyn

拥有此代码:

var code = "public class TestClass {" +
           "  public int HelloWorld(int num) {" +
           "    return 5 + num;" +
           "  }" +
           "}";

var script = CSharpScript.Create(code);
var x = (await script.RunAsync()).ReturnValue;

如何传递参数的值,调用方法并读取返回值?

1 个答案:

答案 0 :(得分:1)

继续使用另一个代码是最简单的。

var call = await script.ContinueWith<int>("new TestClass().HelloWorld(3)").RunAsync();
var x = call.ReturnValue;

顺便说一下,CSharpScript是一个脚本引擎,它不需要像普通的C#程序那样拥有类和方法。您可以使用5 + num作为脚本内容。

var code = "5 + num";
var numValue = 3;

var setParam = await CSharpScript.RunAsync("var num = " + numValue + ";");
var runCode = await setParam.ContinueWithAsync(code);
var x = runCode.ReturnValue;

完整示例,请查看RoslynScript/Script.cs