[DLR] DLRを使った言語のホスティング
Dynamic Language Runtime上の言語として、IronPython、IronRubyなどの開発が行われています。これらの言語をC#やVBなどで利用するには、Microsoft.Scripting.dllを利用します。最初に行うのは、言語プロバイダを取得します。
using Microsoft.Scripting.Hosting;
LanguageProvider ipy = ScriptDomainManager.CurrentManager.GetLanguageProvider("py");
//もしくは 以下のコード
LanguageProvider ipy = ScriptDomainManager.CurrentManager.GetLanguageProviderByFileExtension("py");
次に行うのは、スクリプトエンジンの取得です。
ScriptEngine eng = ipy.GetEngine();
GetEngineメソッドによって言語プロバイダに対応したスクリプトエンジンのインスタンスを取得することができます。スクリプトエンジンのインスタンスが取得できれば、ExecuteFileメソッドやExecuteメソッド、Evaluateメソッドによって対応するスクリプトを実行することができるようになります。
もちろん上記のコードを実行するには、IronPythonやIronRubyのアセンブリをロードできるようにしておく必要があります。
ここで利用したLanguageProviderやScriptEngineクラスがMicrosoft.Scripting.Hostingネームスペースに定義されており、IronPythonやIronRubyが継承しているのは云うまでもありません。この継承関係を使って、SilverLight1.1アルファのサンプルであるDLR Consoleは、IronPythonとManaged JScriptの言語を切り替えられるようにしているのです。