亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在沒有具體<T>的情況下在.Net core中注入NLOG?

在沒有具體<T>的情況下在.Net core中注入NLOG?

C#
白板的微信 2023-07-22 15:53:13
文檔說我們應該使用它以便在 .Net core DI 中使用 Nlog :.UseNLog();  // NLog: setup NLog for Dependency injection然后我們就可以使用 DI 了:public class HomeController : Controller{    private readonly ILogger<HomeController> _logger;    public HomeController(ILogger<HomeController> logger)    {        _logger = logger;    }}但我們不會將 ILogger 注入到我們想要登錄的每個類中。我們有一個名為的服務IHelper,它依次注入Ilogger:public class Helpers : IHelpers{    private readonly ILogger _logger;    public Helpers(ILogger<Helpers> logger)    {        _logger = logger;    }}所以事實證明我們總是使用Helpersas 類型。(:/)我嘗試僅注入(?。㊣Logger(沒有類型),但出現錯誤。問題:有沒有更好的模式可以在ILogger沒有虛擬<Helpers>(在我的情況下......)類型的情況下使用?或者有沒有辦法不指定任何類型?
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

你可以制作IHelpers和Helpers通用。這將允許您創建一個使用類型參數名稱的類別ILoggerFactory的實例。ILogger這是一個例子:


public interface IHelpers<T> { }


public class Helpers<T> : IHelpers<T>

{

    private readonly ILogger _logger;


    public Helpers(ILoggerFactory loggerFactory)

    {

        _logger = loggerFactory.CreateLogger<T>();

    }

}

要在 eg 中使用它SomeClass,請IHelpers<SomeClass>在構造函數中使用 for DI:


public class SomeClass

{

    private readonly IHelpers<SomeClass> _helpers;


    public SomeClass(IHelpers<SomeClass> helpers)

    {

        _helpers = helpers;

    }

}

最后,注冊IHelpers<T>為開放通用,如下所示:


services.Add(ServiceDescriptor.Singleton(typeof(IHelpers<>), typeof(Helpers<>)));


查看完整回答
反對 回復 2023-07-22
  • 1 回答
  • 0 關注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號