c# - 如何使用 C# ScriptEngine 执行类中的方法

标签 c# roslyn

我怎样才能得到这个来源的结果

var src = @"public class Test
{
    public IList<string> CallMe(int count = 10)
    {
        return Enumerable.Range(0, count).Select(x => $""Number-{x}"").ToList();
    }
}";

由 C# 中的 Roslyn ScriptEngine 实现?

我该怎么做?

object result = await CSharpScript.EvaluateAsync("new Test().CallMe(20)");

最佳答案

实现此目的的方法之一是使用 Roslyn 脚本的延续来保持先前的执行状态:

var src = @"public class Test
{
    public IList<string> CallMe(int count = 10)
    {
        return Enumerable.Range(0, count).Select(x => $""Number-{x}"").ToList();
    }
}";

var options = ScriptOptions.Default
    .AddReferences("mscorlib", "System.Core") // assume that it's run under .netframework
    .AddImports("System", "System.Linq", "System.Collections.Generic");

var list = CSharpScript.RunAsync(src, options).Result
                       .ContinueWithAsync<IList<string>>("new Test().CallMe(20)").Result.ReturnValue;

关于c# - 如何使用 C# ScriptEngine 执行类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52754473/

相关文章:

c# - MS BOT 更改根对话框

c# - Visual Studio - 继承控件的新 "default"属性值

c# - 使用 Fluent API 级联删除

c# - 计算 GridView 中选中的复选框

c# - 使用 Roslyn 调试动态编译的代码

c# - 如何使用 Roslyn 评估局部变量/参数状态

c# - 执行 IOLE SetClientSite 时忽略 `WebBrowserShortcutsEnabled = false`

c# - 为什么这个方法调用不明确?

c# - 使用 Roslyn 编译

c# - 如何在 Roslyn 中禁用不必要的 using 指令检查?