2014-02-24 4 views
3

C# 콘솔 응용 프로그램에서는 Console.WriteLineConsole.Write을 통해 텍스트를 콘솔에 쓸 때마다 알림을받을 수 있습니까?Console.WriteLine에 이벤트 후크 가져 오기

이 이벤트가 발생하면 작성하기 전에 텍스트를 변경하거나 파일로 리디렉션하거나 현재 Console.ForegroundColor를 변경하는 등의 작업을 수행 할 수 있어야합니다.

이 작업을 수행하는 간단한 방법은 Console.WriteLine을 직접 호출하지 말고 항상 내 자신의 사용자 지정 래퍼 메서드를 호출하는 것입니다.

더 좋은 또 다른 방법은 사용자 정의 ConsoleTraceListener을 작성하고 trace.TraceInformation()을 통해 모든 텍스트를 출력하는 것입니다. 나는 그것을했고 그것은 잘 작동합니다.

그러나 Console.WriteLine 호출이 변경되지 않고 유지되어야하는 다른 어셈블리 안에있는 경우에는 작동하지 않습니다.

Console.WriteLine에 전화를 걸 수있는 코드를 수정하지 않고도 대응할 수있는 방법이 있습니까?

+0

콘솔 표준 출력을 자신의 스트림으로 재전송 해 보셨습니까? –

+0

원숭이 패치 Console.WriteLine을 시도해보십시오. https://stackoverflow.com/questions/9684804/is-there-a-way-to-override-a-method-with-reflection 나는 나 자신을 한번도 시도한 적이 없다. – MatthewMartin

답변

8

Console.SetOut을 사용하여 사용자 지정 Writer 클래스를 설정할 수 있습니다. 이 클래스에서는 직접 쓰기 기능을 만들 수 있습니다.