Правильная регистрация из библиотеки nuget - PullRequest
0 голосов
/ 14 января 2020

Я разрабатываю библиотеку nuget, которая может быть использована в приложении WPF и приложении UWP, и я хочу использовать Microsoft.Extensions.Logging.Abstractions, чтобы предоставить пользователям возможность подключать выбранный ими логгер из своих приложений (Serilog, NLog и др.). c ..). Поэтому я начал с этого:

public static partial class FrameworkElementExtensions
{
    internal static ILogger _logger;

    public static void AttachLogger(ILogger logger) => _logger = logger;
.
.
.
}

В этом случае мне нужно добавить протоколирование в методы расширения, основанные на FrameworkElement. Я чувствую, что поступаю неправильно, поскольку у меня есть функция с именем AttachLogger для ввода логгера, а также мой ILogger не связан с типом (например: ILogger<T>), так как я нахожусь в stati c class.

Может ли кто-нибудь указать мне правильное направление? Спасибо!

1 Ответ

1 голос
/ 14 января 2020

Я не вижу лучшего способа "внедрить" зависимость в класс stati c с Microsoft.Extensions.Logging.Abstractions, кроме использования выделенного для него метода (AttachLogger в вашем случае).

Относительно generi c Logger<T>, вы можете ввести ILoggerFactory и создать регистратор, связанный с вашим классом

public static void AttachLogger(ILoggerFactory loggerFactory)
{
    _logger = loggerFactory.CreateLogger(nameof(FrameworkElementExtensions));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...