[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=4634Anonymous
January 09, 2008
The comment has been removedAnonymous
January 09, 2008
昨日の エントリ でDLRを使ったホスティングを簡単に説明しましたが、少し情報が古かったです。具体的には、IronPython 2.0A6までの話で、A7から変更になっています。 A7からLangagueProviderクラスが廃止になり