ASP.NET Core:注入事件处理程序吗?

时间:2018-10-15 19:02:11

标签: c# asp.net-core dependency-injection common-service-locator

我有一个asp.net核心应用程序,这是我的设置:

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

不幸的是,我无法控制该调度程序中间件,因此我只能拥有AddScheduler和lambda。

到目前为止,我唯一想出的是:

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”的另一种方式。

还有更好的主意吗?应该如何理想地处理它?<​​/ p>

(这不是How do I write logs from within Startup.cs的重复,因为这是关于注入事件处理程序而不是启动对象中的。)

0 个答案:

没有答案