Вход в .NET Core без DI? - PullRequest
       1

Вход в .NET Core без DI?

0 голосов
/ 10 ноября 2018

Кажется, что Microsoft действительно пытается затолкнуть DI в горло с помощью .NET Core, и я не уверен почему, но, честно говоря, мое консольное приложение маленькое и простое, и я просто не хочу создавать целый DI Контейнер просто сделать несколько простых журналов. Как я могу войти в .NET Core без использования DI? Все, что я прочитал, предполагало, что вы собираетесь использовать встроенную архитектуру ведения журнала .NET Core, которая, очевидно, требует DI, но должен быть способ сделать это без DI, используя статическую переменную в классе?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

В итоге я использовал NLog, но вместо того, чтобы использовать их расширения .NET Core DI, я просто включил основной пакет NLog NuGet , вручную создав свой собственный файл NLog.config и следуя учебник до GetCurrentClassLogger(), создавая его как статический член моего класса, а затем напрямую использовал его для ведения журнала. Это довольно простая настройка и не требует DI. NLog, вероятно, должен документировать это лучше.

0 голосов
/ 10 ноября 2018

Если вы хотите сделать это самостоятельно, вам нужно будет создать экземпляр LoggerFactory где-нибудь и настроить, каких поставщиков вы хотите. Тогда вам просто нужно вызвать CreateLogger для создания экземпляра или использовать new Logger<T>(ILoggerFactory) для создания регистратора.

using Microsoft.Extensions.Logging;

static class MyLogger {

    public static ILoggerFactory LoggerFactory {get;}

    static MyLogger() {
        LoggerFactory = new LoggerFactory();
        LoggerFactory.AddConsole();
    }
}

public MyClass {
    private readonly ILogger _logger = new Logger<MyClass>(MyLogger.LoggerFactory);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...