c# - 如何使用 C# ScriptEngine 在类中执行方法
问题描述
我怎样才能得到这个来源的结果
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 Scripting 中的延续来保持先前的执行状态:
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;
推荐阅读
- mysql - 何时使用 WHERE c.column = null 的 SQL 子句?
- java - 如何更新 Google Cloud Dataflow 中的现有记录?
- javascript - 检查当前时间是否在 JavaScript 中的开始时间和结束时间之间
- database - 使用 findOrNew 更新 Laravel 中的表 DB
- python - 使用安装文件自动下载poppler
- swift - 应用程序从 ionic 转换为 IOS 或 Android 时显示白屏
- xcode - 如何在不同的网站上获取谷歌价格?
- flutter - 页面幻灯片过渡建议颤抖
- javascript - Sum Checked 单选按钮值不起作用
- ios - 如何为 iOS 创建 Rust 动态库(dylib)?