Czy należy wprowadzić infrastrukturę pozyskiwania drewna przy użyciu IoC / DI, jeśli używana jest elewacja pozyskiwania drewna?

Używam Autofac jako mojego IoC i ze wszystkiego, co przeczytałem na temat DI, uczy używać "wstrzykiwania konstruktora", aby jawnie ujawniać zależności klasowe ... Jednak używam też logowania fasady (Common.Logging) z Log4Net i stworzyłem Moduł Autofac do wstrzykiwania. Teraz, w każdej klasie, w której chcę zrobić jakieś logowanie, mam dodatkowy parametr konstruktora (patrz przykład nr 1) ....

Zastanawiam się, czy rejestrowanie DI jest konieczne przy korzystaniu z elewacji logowania? Rozumiem, że jawne ujawnienie zależności za pomocą podpisu konstruktora jest dobrą architekturą.ale w przypadku wycinania elewacji wierzę, że to prawda:

W każdej chwili mogę nadal „wymieniać” ramy logowaniaKlasa IMHO nie jest tak naprawdę zależna od Loggera. Jeśli nie skonfigurowano rejestrowania, używany jest NullLogger. Jest to prawie „jeśli jest to potrzebne” vs. „nie zadziała, jeśli nie dostarczysz jej” rodzaju transakcji ... (patrz próbka # 2)

Więc co myślą inni? Czy wstrzykiwanie elewacji zrębowej to przesada? Tam jest trochępodobne pytania na ten temat, ale bardziej ogólnie (infrastruktura) - Interesuje mnie głównie logowanie ....

// IoC "way"
public class MyController : BaseController
{
    private readonly ILog _logger;

    public MyController(ILog logger)
    {
        _logger = logger;
    }

    public IList<Customers> Get()
    {
        _logger.Debug("I am injected via constructor using some IoC!");
    }
}

// just use the logger "way"
public class MyController : BaseController
{
    private static readonly ILog Logger = LogManager.GetCurrentClassLogger();

    public IList<Customers> Get()
    {
        Logger.Debug("Done! I can use it!");
    }
}

questionAnswers(4)

yourAnswerToTheQuestion