3

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」を渡さなくても、アセンブリのパブリック静的メンバーを呼び出すことができることを示しました。これを防ぎたい。スクリプトエンジンからアクセスできる特定のメンバー(関数、変数、またはプロパティ)のみを登録し、他のメンバーは登録できないようにしたいと思います。

これを達成する方法はありますか?

4

1 に答える 1

1

Roslyn を使用して AST をトラバースし、許可されていないものをスクリプトが呼び出そうとするかどうかを確認します。

于 2012-09-27T15:46:23.393 に答える