41 votes

Est-il possible d'intercepter sortie de la Console?

J'ai appeler une méthode, disons, FizzBuzz(), sur lequel je n'ai aucun contrôle. Cette méthode génère un tas de trucs à la Console à l'aide d' Console.WriteLine.

Est-il possible pour moi d'intercepter la sortie générée par l' FizzBuzzméthode? Note que mon application est une application de Console elle-même.

65voto

Teoman Soygul Points 17544

Oui, tout à fait possible:

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);
Console.WriteLine("This is intercepted."); // This is not written to console
File.WriteAllText("ConsoleOutput.txt", consoleOut.ToString());

Plus tard, si vous voulez arrêter l'interception de la sortie de la console, de modification de l'utilisation ci-dessous:

var stdOut = Console.Out;
// Above interceptor code here..
Console.SetOut(stdOut); // Now all output start going back to console window

Ou la OpenStandardOutput fait la même chose sans avoir besoin d'enregistrer le flux standard d'abord:

// Above interceptor code here..
var standardOutput = new StreamWriter(Console.OpenStandardOutput());
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput); // Now all output starts flowing back to console

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X