[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の言語を切り替えられるようにしているのです。

Comments (3)

  1. 昨日の エントリ でDLRを使ったホスティングを簡単に説明しましたが、少し情報が古かったです。具体的には、IronPython 2.0A6までの話で、A7から変更になっています。 具体的には、A7からLangagueProviderクラスが廃止になり、ScriptEngineクラスのメソッドが変更になっています。具体的には、ScriptDomainManagerからスクリプトエンジンのインスタンスを取得します。

  2. 昨日の エントリ でDLRを使ったホスティングを簡単に説明しましたが、少し情報が古かったです。具体的には、IronPython 2.0A6までの話で、A7から変更になっています。 A7からLangagueProviderクラスが廃止になり

Skip to main content