Ядро Asp.net: внедрение в обработчик событий? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть базовое приложение asp.net, и это моя установка:

services.AddSingleton(typeof(ISchedule), typeof(MySchedule));
services.AddLogging();
services.AddScheduler((sender, args) =>
{
    // How do I log here?
});

К сожалению, я не могу контролировать это промежуточное ПО планировщика, так что AddScheduler и лямбда - всеУ меня есть.

Пока единственное, что мне удалось придумать, это:

services.AddSingleton(typeof(ISchedule), typeof(MySchedule));
services.AddLogging();

IServiceProvider serviceProvider = services.BuildServiceProvider();
services.AddScheduler((sender, args) =>
{
    ILogger<ISchedule> logger = serviceProvider.GetService<ILogger<ISchedule>>();
    logger.LogError(args.Exception, "Uncaught exception during processing");
    args.SetObserved();
});

Но это просто еще один способ проникнуть в своего рода «ServiceLocator» череззакрытие.

Есть идеи получше?Как это должно быть идеально обработано?

(Re это не дублирование Как мне записывать логи из Startup.cs , потому что речь идет о внедрении в обработчик событий, а не вобъект запуска.)

...