我一直在考慮這個代碼懶屬性初始化靜態類C#
public static class Logger
{
public static Func<ILogger> LoggerFactory;
private static readonly Lazy<ILogger> _log = new Lazy<ILogger>(LoggerFactory);
public static ILogger Instance
{
get
{
return _log.Value;
}
public static ILogger ConfigureLogging(string AppName, Version AppVersion)
{
// stuff
}
}
}
這個靜態類應用程序中使用:
Logger.LoggerFactory =() => Logger.ConfigureLogging(AppName, AppVersion);
Logger.Instance.Information("Starting application");
我希望第一行設置的LoggerFactory;然而,在寫入日誌的第一次嘗試中,由於尚未設置靜態Func LoggerFactory,所以拋出了異常。
這段代碼有什麼問題?
感謝
因爲當你創建'_log','LoggerFactory'爲空。當您執行'Logger.LoggerFactory = ...'時,您已經初始化了'_log' –
您可以嘗試:'private static readonly Lazy _log = new Lazy (()=> LoggerFactory());' –