2012-03-28 31 views
0

我在這裏學到了stackoverflow,你可以很容易地實現Win窗體的c#和Web瀏覽器控件中加載的javascript之間的雙向訪問。那麼讓我問一下,是否可以使用任何免費的C#組件在C#和IronRuby之間進行類似的雙向訪問?儘管我在.net平臺上搜索瞭如何在兩種語言之間進行雙向訪問,但其中的任何一種都不會像我先描述的那樣帶來同樣的簡單性。有沒有免費的C#組件類來提供C#代碼從文件加載IronRuby代碼的方式?

+0

@oleksii非常感謝。您的示例可能意味着我不需要額外的組件來執行我想要的操作。它幫助我爲IronRuby搜索相似的樣本。 – 2012-03-28 07:43:37

+0

是的,有幾個接口(可能是幾種語言的默認實現),允許從C#運行其他語言。如果沒有允許運行Iron Ruby的默認組件,可能會有獨立的庫實現接口並允許運行Iron Ruby,如果您發現不要忘記在此發佈答案。 – oleksii 2012-03-28 07:50:36

+3

@oleksii,什麼?我認爲你不能在沒有CLR的情況下毀掉IronRuby *。這就是IronRuby而不是普通的Ruby的一點。 – svick 2012-03-28 07:58:37

回答

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

class Hello 
    def initialize text 
    @text = text 
    end 

    def set_text text_box 
    text_box.Text = @text 
    end 
end 

PS的Ruby代碼。在從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#類可以訪問的對象。 – 2012-03-28 14:48:58

+0

整個.Net可以從IronRuby訪問,你不需要任何C#代碼來使用它們。 – svick 2012-03-28 15:09:25

2

IronRuby庫可以讓你做到這一點。剛纔提到的IronRuby.dll和IronRuby.Libraries.dll組件,添加using IronRuby;然後你可以這樣做:

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

然後,您可以查詢scope對於某些變量,或者獲取所有變量的列表。

+0

非常感謝。這兩個答案在IronRuby 1.0中效果很好。 – 2012-03-28 14:37:57

相關問題