IronRuby RCでのホスティング
IronRubyはα時代から弄っていましたが、バージョンが上がるたびにホスティング方法が変更されていました。RCになったのでそろそろ最終版だと思いたいのですが、どーなんでしょ。(^^;
てきとーなrubyのクラス。
class Foo def bar puts 'baz' end def add(x, y) x + y end def sub(x, y) x - y end end
これをC#から呼び出してみます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using IronRuby.Hosting; namespace IronRubySample { class Program { static void Main(string[] args) { // rubyによるクラス定義 var path = "Foo.rb"; // rubyスクリプトを実行 var ir = IronRuby.Ruby.CreateRuntime(); ir.ExecuteFile(path); // クラスオブジェクトを取得 var fooClass = ir.Globals.GetVariable("Foo"); // インスタンスの生成 dynamic foo = ir.Operations.CreateInstance(fooClass); // メソッドを呼び出す foo.bar(); Console.WriteLine(foo.add(10, 20)); Console.WriteLine(foo.sub(10, 20)); } } } /* 結果 baz 30 -10 */
dynamicのおかげで、結構すっきりかけるようになりましたね。