Подавить Console.WriteLine для части программы

По какой-то неизвестной мне причине разработчик библиотеки, которую я использую, решил Console.WriteLine тонны информации всякий раз, когда метод вызывается в библиотеке, по существу, объясняя каждый шаг в том, что происходит.

Это хорошо, но во время разработки мне не нужно постоянно видеть это, поэтому мой вопрос - могу ли я подавить Console.WriteLine быть использованным, когда я не хочу, чтобы это было? Я все еще хочу иметь возможность увидеть свой собственный Console.WriteLineс, но не те, что в библиотеке.

Само собой разумеется, у меня нет источника для библиотеки.

С Уважением,

Аляска

1 ответ

Решение

Ты можешь использовать Console.SetOut перенаправить Console.Out на что-то по вашему выбору (например, что-то, что отбрасывает все входные данные) перед вызовом в эту библиотеку, а затем сделайте то же самое, чтобы вернуть исходное значение. Это будет неловко делать это все время.

Чтобы сделать вещи немного более управляемыми, вы можете создать другой класс, который реализует IDisposable и используйте это так:

using(new StandardOutSink()) {
    // call into the third party library
}

Конструктор StandardOutSink (который вам нужно написать) перенаправит поток вывода на специально созданный TextWriter (который вы также должны написать), а затем Dispose Метод вернул бы его к исходному потоку.

Другие вопросы по тегам