2017-04-06 114 views
2

我在写测试代码为下面的方法:标准输出重定向到列表<string>或流

public static void PrintAll<T>(this IEnumerable<T> collection) 
{ 
    foreach (T item in collection) 
    { 
     Console.Write(item.ToString()); 
    } 
} 

所以基本上我认为需要做的事情是,我可以填补与随机数据的数组,输出它使用这种方法,将其存储在一个流/集合中,然后使用标准的foreach循环输出它并比较两者。

据我所知,Console.Write()实际上没有写入到它写入我的应用程序的标准输出的控制台。

我知道如何将其重定向到其他Process对象,但不知道如何重定向我自己的应用程序的标准输出,有什么想法?

回答

3

您可以使用Console.SetOut将控制台的输出临时设置为字符串。

例如:

StringBuilder sb = new StringBuilder(); 
StringWriter sw = new StringWriter(sb); 
// Save the standard output. 
TextWriter tmp = Console.Out; 
Console.SetOut(sw); 
// Code which calls Console.Write 
Console.SetOut(tmp); 
string actual = sb.ToString(); 

记住处置StringWriter对象。

+0

完成了!谢谢! –

相关问题