2010-02-25 4 views
1

IronRuby를 사용하여 Yaml 파일을 구문 분석 한 다음 C#에서 구문 분석 된 문서를 사용하고 있습니다. 이것은 엔진 (Ruby.CreateEngine())을 만들고 YAML::load(File.open('myFile.yaml'))을 실행하는 데는 잘 작동합니다..Net Stream을 IronRuby에 전달 하시겠습니까?

그러나 루비 코드 몇 줄을 실행할 때 파일 이름에 문자열을 하드 코딩 할 수 있기 때문에 잘 작동합니다.

이제, .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) –

관련 문제