我正在试验 Roslyn 脚本引擎。使用以下代码,我设置了我的脚本引擎。
var csharpEngine = new ScriptEngine();
csharpEngine.AddReference("System");
csharpEngine.AddReference(this.GetType().Assembly.Location);
scriptSession = csharpEngine.CreateSession();
然后我使用以下行执行脚本:
scriptSession.Execute(script);
该脚本包含对我程序集中类的静态函数的非常简单的引用。
private string script =
@"using System;
using RoslynWindow;
Hello.SayHello();";
在输出窗口中,该函数仅打印到控制台。所以我展示了我可以调用我的程序集的公共静态成员,而无需将“HostObjectModel”传递给脚本引擎。我想防止这种情况发生。我希望能够仅注册脚本引擎可以访问的特定成员(函数、变量或属性),而不能注册其他成员。
知道如何做到这一点吗?