2016-08-09 120 views
-1

Ich muss Console.WriteLine() Ausgabe nehmen und an eine Zeichenfolge anhängen. Ich kann die Main-Methode nicht ändern, um einfach an eine Zeichenfolge anzuhängen, anstatt an die Konsole zu schreiben - ich brauche eine Methode, um alle geschriebenen Zeilen von der Konsole zu lesen und sie an eine Zeichenfolge anzufügen.Redirect Console.WriteLine() Ausgabe in String

Zur Zeit habe ich eine verwendet und Konsolenausgabe in eine Textdatei umgelenkt und dann davon gelesen.

var fs = new FileStream("dataOut.txt", FileMode.Create); 
var sw = new StreamWriter(fs); 
Console.SetOut(sw); 
Console.SetError(sw); 

Und dann Console.WriteLine("whatever") schreibt in die Textdatei. Ich möchte dies jedoch tun, ohne aus einer Textdatei hin- und herzugehen.

Ist so etwas möglich? Ich weiß, dass das Beispiel unten nicht funktioniert.

string outString = ""; 
Console.SetOut(outString); 
Console.SetError(outString); 
+1

* „Ich kann nicht die Hauptmethode ändern, um einfach in einen String anhängen, anstatt auf die Konsole zu schreiben“ * Warum nicht? –

+0

Warum speichern Sie die Informationen nicht in einem 'StringBuilder Object', wenn Sie fertig sind, schreiben Sie die Informationen in eine Textdatei, – MethodMan

+0

@EdPlunkett, weil ich den Code nicht geschrieben habe und nicht die Erlaubnis habe, ihn zu modifizieren . – lrey

Antwort

1

Verwenden Sie ein StringWriter:

var sw = new StringWriter(); 
Console.SetOut(sw); 
Console.SetError(sw); 
string result = sw.ToString();