2012-03-28 4 views
0

ここでは、Windowsフォームのc#とWebブラウザコントロールにロードされたjavascriptの間で双方向のアクセスを簡単に実現できるstackoverflowを学びました。次に、無料のC#コンポーネントを使用してC#とIronRubyの間で同様の双方向アクセスを行うことができるかどうか質問します。私は、.netプラットフォームで2つの言語間の双方向アクセスを行う方法を探しましたが、それらのいずれも最初に説明したのと同じ単純さをもたらしません。C#コードでファイルからIronRubyコードをロードする手段を提供するための、フリーのC#コンポーネントクラスはありますか?

+0

@oleksiiありがとうございました。サンプルは、私が欲しいことをするために余分なコンポーネントが必要ないことを意味するかもしれません。 IronRubyの類似サンプルの検索に役立ちます。 –

+0

ええ、C#から他の言語を実行できるようにするインターフェイスがいくつかあります。 Iron Rubyを実行するためのデフォルトコンポーネントがない場合、インターフェイスを実装し、Iron Rubyを実行できる独立したライブラリがあるかもしれません。ここで答えを投稿することを忘れないでください。 – oleksii

+3

@oleksii、何?私はCLRなしでIronRuby *を実行することはできないと思います。それがIronRubyであり、通常のRubyではない点です。 – svick

答えて

1

@svickが正しいですが、データがC#からIronRubyに流れて戻ってくる例を詳しく説明したいと思います。

var engine = Ruby.CreateEngine(); 
engine.ExecuteFile("../../test.rb"); 
dynamic ruby = engine.Runtime.Globals; 
dynamic hello = [email protected]("Hello from Ruby!"); 
hello.set_text(textBox1); 

とtest.rbでRubyコード

class Hello 
    def initialize text 
    @text = text 
    end 

    def set_text text_box 
    text_box.Text = @text 
    end 
end 

PS。 http://ironruby.net/download/からIronRubyをインストールした後、何らかの理由でC:\ WINDOWS \ Microsoft.NET \ assembly \ GAC_MSIL \ DSにIronRuby.dll、IronRuby.Libraries.dll、Microsoft.Scripting.dllしか見つかりませんでした。

+0

ありがとうございます。コードはIronRuby 1.0でうまく動作します。 IronRuby内でどのC#クラスにアクセスできるかのオブジェクトをチェックします。 –

+0

.Net全体にIronRubyからアクセスでき、それらを使用するためにC#コードは必要ありません。 – svick

2

IronRubyライブラリでは、これを行うことができます。ただ、IronRuby.dllとIronRuby.Libraries.dllアセンブリを参照using IronRuby;を追加して、あなたのような何かを行うことができます:あなたはその後、特定の変数のためのscopeを照会、またはすべての変数のリストを取得することができます

var engine = Ruby.CreateEngine(); 
var scope = engine.ExecuteFile(fileName); 

を。

+0

ありがとうございます.2つの答えはどちらもIronRuby 1.0でうまくいきます。 –

関連する問題