如何在C#中为托管控制台应用程序提供多个输入源?

时间:2015-05-08 19:23:54

标签: c# console-application read-eval-print-loop inter-process-communicat

我想构建一个交互式脚本应用程序,让用户在REPL中编写单个表达式,同时让他们从代码编辑器向它发送代码。我想我会尝试一个解决方案,其中REPL是一个控制台应用程序,编辑器是一个托管控制台应用程序的独立应用程序。因此,控制台应用程序(REPL)必须接受来自键盘的用户输入以及编辑器应用程序。

如果我在编辑器中托管控制台应用程序(REPL),我可以重定向标准输入,这样就可以将文本(代码)发送到控制台应用程序(参见下面的代码)。但是有可能以某种方式为控制台应用程序提供多个输入源或在运行时切换输入源,以便用户可以在REPL中键入代码并从代码编辑器向其发送代码吗?或者我必须有一个单一的流程解决方案吗?

Process replProc = new Process();
replProc.StartInfo.FileName = "repl.exe";
replProc.StartInfo.UseShellExecute = false;
replProc.StartInfo.RedirectStandardInput = true;
replProc.Start();
StreamWriter replWriter = replProc.StandardInput;
replWriter.WriteLine(@"
    public class ScriptedClass 
    {
       public string HelloRepl
       {
          get { return ""Hello from editor!"";}
       }
    }");

0 个答案:

没有答案