Получение стандартного вывода из скрипта IronRuby с использованием API-интерфейсов DLR - PullRequest
4 голосов
/ 14 марта 2010

У меня есть очень простой файл test.rb:

puts "Hello World"

Я хочу выполнить этот файл в c #, например:

var runtime = Ruby.CreateRuntime();
runtime.ExecuteFile("C:\test.rb");

Как я могу захватить «Hello World»«

Ответы [ 4 ]

3 голосов
/ 14 марта 2010

ScriptRuntime имеет свойство IO, которое возвращает объект ScriptIO. Вы можете вызвать SetOutput и перенаправить вывод. Как уже упоминали другие, есть также Console.SetOut, который вы можете вызвать, если пользователь вызывает Console.WriteLine напрямую. Хорошая вещь об использовании ScriptIO, хотя вы можете иметь несколько сценариев в разных ScriptRuntime записи для разных выходов.

1 голос
/ 14 марта 2010

Вы можете перенаправить стандартный вывод и прочитать его в своей программе на C # , как показано здесь .

0 голосов
/ 14 марта 2010

Одна вещь, которую вы можете сделать, это вызвать Console.setOut и / или Console.setErr перед ExecuteFile и снова после. В первый раз вы перенаправите вывод в выбранный вами поток, а затем восстановите его до предыдущего значения.

0 голосов
/ 14 марта 2010

Я думаю, что этот пост отвечает на ваш вопрос.

...