2010-02-25 81 views
1

我正在使用IronRuby解析Yaml文件,然後在C#中使用解析的文檔。這對於創建引擎(Ruby.CreateEngine())並執行YAML::load(File.open('myFile.yaml'))工作正常。將.Net Stream傳遞給IronRuby?

但是,這很有效,因爲我可以在執行幾行ruby代碼時爲文件名硬編碼字符串。

現在,我想了解如何從.Net中傳遞流以使Yaml解析器加載它。我如何使用腳本引擎來做到這一點?

回答

1

您可以使用ScriptScope設置變量,然後從Ruby代碼中使用它。 例如:

ScriptEngine eng = Ruby.CreateEngine(); 
ScriptScope scope = eng.CreateScope(); 
scope.SetVariable("my_stream",stream); 
eng.Execute("self.my_stream.read() # or whatever...", scope); 
+0

但創建一個StreamReader並傳遞StreamReader而不是流。那麼你可以這樣做: my_yaml = YAML.load(self.my_stream_reader.ReadToEnd) – 2010-02-25 17:57:34