Skip to main content
 首页 » 编程设计

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

2025年12月25日40xxx_UU

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

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;