簡體   English   中英

重定向控制台。寫入特定程序集

[英]Redirect Console.Write of specific assembly

在我的C#應用​​程序中,我通過反射加載另一個程序集。

該另一個程序集使用Console.Write函數寫入控制台。

我只想將輸出重定向到該特定程序集的log4net附加程序。 我希望所有其他程序集繼續輸出到控制台。

我該如何實現?

  1. Console類具有靜態方法SetOut ,該方法將輸出重定向到StreamWriter對象。
  2. 如果您要的匯編相同,請編寫自己的StreamWriter擴展類以重定向控制台輸出。 只是為了舉例。

    公共類Writer:StreamWriter {private只讀Assembly _assembly;

     private readonly StreamWriter _stdout; public Writer(Assembly assembly) : base(Console.OpenStandardOutput()) { _assembly = assembly; _stdout = new StreamWriter(Console.OpenStandardOutput()); } public override void Write(string value) { var st = new StackTrace(); var curent = st.GetFrames(); foreach (var frame in curent) { if (frame.GetMethod().Module.Assembly == _assembly) { _stdout.Write("Redirected: " + value); _stdout.Flush(); return; } } base.Write(value); this.Flush(); } 

    }

在某些場合,例如一個程序集調用方法,會從另一個程序集寫入控制台。 我不知道如何預測這種行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM