4

我有一个非常简单的 test.rb 文件:

puts "Hello World"

我想在 c# 中执行这个文件,例如:

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

如何捕获“Hello World”?

4

4 回答 4

2

ScriptRuntime 有一个 IO 属性,它返回一个 ScriptIO 对象。您可以调用 SetOutput 并重定向输出。正如其他人所提到的,还有 Console.SetOut 您可能想调用它,以防用户直接调用 Console.WriteLine。不过,使用 ScriptIO 的好处是您可以在不同的 ScriptRuntime 中将多个脚本写入不同的输出。

于 2010-03-14T20:51:08.343 回答
0

您可以重定向标准输出并在您的 C# 程序中读取它,如下所示

于 2010-03-14T04:46:22.333 回答
0

您可以做的一件事是在 ExecuteFile 之前和之后再次调用 Console.setOut 和/或 Console.setErr。第一次您将输出重定向到您选择的流,然后将其恢复为以前的值。

于 2010-03-14T05:47:12.020 回答
-1

我认为这篇文章回答了你的问题。

于 2010-03-14T05:29:28.330 回答