Я использую библиотеку 0Zero.Sandbox из NuGet для песочницы сценария C #, но я получаю эту ошибку, когда определяю метод с выражением тела:
Ошибка (CS1002):; ожидается
А вот моя функция:
public T Evaluate<T>(string code)
{
var str =
$@"using System;
namespace MyScripts
{{
public static class Script
{{
public static {typeof(T)} Function() => {code};
}}
}}";
new SandBoxer(str, false).SandBox.Call("MyScripts.Script", "Function", out T result);
return result;
}
Я думаю, что происходит, когда пакет NuGet работает под старой версией .NET, которая не поддерживает методы выражения выражений, но я не знаю, как заставить его работать под последней версией, как мой настоящий проект. Как бы я это сделал? Если я заменю метод выражения тела на обычный метод:
public static {typeof(T)} Function() {{ return {code}; }}
все работает нормально ... Или я просто упускаю очевидную синтаксическую ошибку? Я не думаю, что это так, потому что я могу скомпилировать свою функцию просто отлично, используя Roslyn, не получая никаких ошибок ...