我有一个有趣的难题,我的应用可以作为控制台应用程序或Windows窗体应用程序运行。
由于我不想在我的整个应用程序中编写大量如下的代码:
If ( IsConsoleApp() )
{
// process Console input and output
}
else
{
// process Windows input and output
}
为了避免这种情况,我决定创建两种方法,可以传入TextReader和TextWriter实例,然后使用它们来处理输入和输出,例如:
public void SetOutputStream( TextWriter outputStream )
{
_outputStream = outputStream;
}
public void SetInputStream( TextReader inputStream )
{
_inputStream = inputStream;
}
// To use in a Console App:
SetOutputStream( Console.Out );
SetInputStream( Console.In );
为了在控制台窗口中显示一些文本,我只需要像这样做:
打印一些文本到控制台窗口可以使用以下方法:
_outputStream.WriteLine( "Hello, World!");
文本会自动重定向到控制台。
现在,我的问题是如何为Windows应用程序实现类似的功能?我已经创建了一个包含只读文本框控件的表单,并希望将_outputStream
的内容实时重定向到该文本框。
此外,我希望_inputStream
包含另一个文本框控件的内容,以便我的应用程序可以从该流中读取,而不是直接从文本框中读取。
提前致谢。