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のおかげで、結構すっきりかけるようになりましたね。