2016-07-08 4 views
0

Имея этот код:Передайте параметр методу и прочитайте возвращаемое значение?

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

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

Как один передается значение для параметра, вызовите метод и читать возвращаемое значение?

+0

Вам нужно получить тип скомпилированные с помощью сценария, а затем использовать Reflection. Я не знаю, как это сделать. – SLaks

+1

https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples#parameter – wablab

ответ

0

Продолжить с другим кодом является самым простым.

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

Смежные вопросы