2017-04-06 1 views
2

I Test-Code für das folgende Verfahren hier schreiben:Redirect Standardausgabe zur Liste <string> oder Streamen

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

So im Wesentlichen, was ich denke getan werden muss, ist, dass ich ein Array mit zufälligen Daten füllen kann, Ausgang Wenn Sie diese Methode verwenden, speichern Sie sie in einem Stream/einer Sammlung und geben Sie sie dann mit der Standard-foreach-Schleife aus und vergleichen Sie die beiden.

Ich verstehe, dass Console.Write() nicht tatsächlich auf die Konsole schreiben schreibt es auf die Standardausgabe meiner Anwendung.

Ich weiß, wie das für andere Process Objekte umleiten, aber keine Ahnung, wie die Standardausgabe meiner eigenen Anwendung umleiten, irgendwelche Ideen?

Antwort

3

Sie können Console.SetOut verwenden, um die Ausgabe der Konsole vorübergehend auf eine Zeichenfolge festzulegen.

Zum Beispiel:

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(); 

Denken Sie daran, das StringWriter Objekt zu entsorgen.

+0

Das ist geschafft! Vielen Dank! –

Verwandte Themen