Jaa


[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

  • Anonymous
    January 08, 2008
    PingBack from http://msdn.blogsforu.com/msdn/?p=4634

  • Anonymous
    January 09, 2008
    The comment has been removed

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