1 回答

TA貢獻1815條經驗 獲得超13個贊
不應在 UI 層中定義記錄器。這是一個橫切關注點,因此您應該在外部庫中定義它,并在您需要記錄的所有項目中引用它。
如果你只想記錄異常,你可以定義一個全局異常處理程序,讓異常冒泡到 UI 層并在那里記錄它們。這里的例子
如果你真的想一直向下傳遞你的記錄器,你可以Action
在方法中使用 as 參數(shù),并傳遞一個帶有你想要在下游調用的方法調用的 lambda。
public class Logger
{
public string Message { get; set; }
public void Log(string message)
{
Message = message;
}
}
public class Business
{
public void DoWork(int id, Action<string> logAction)
{
if (id < 0)
{
logAction("The string is less than zero");
}
}
}
調用代碼
Logger logger = new Logger();
Business business = new Business();
business.DoWork(-1, (message) => logger.Log(message));
- 1 回答
- 0 關注
- 104 瀏覽
添加回答
舉報