【发布时间】:2017-05-25 22:18:37
【问题描述】:
我有一个打算在多个项目中使用的中间件库。中间件本身看起来像:
public SdkMiddleware(RequestDelegate next, ILogger<SdkMiddleware> logger, ISdk sdk)
{
this.next = next;
this.logger = logger;
this.sdk = agentSdk;
this.sdk.Init();
...
}
感谢 DI,我可以简单地注入我的记录器:
// Would rather this class be internal...
public class Sdk: ISdk
{
private ILogger<Sdk> logger;
public Sdk(ILogger<Sdk> logger)
{
this.logger = logger;
}
public void Init() {
this.logger.Info(...) // Do some logging
}
这样做的缺点是我的课程需要在每个 ASP.Net 项目的Startup.cs 中注册:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<ISdk, Sdk>();
是最好的/唯一的路线吗?每次我想将记录器注入一个类时,我需要在我的组合根目录中为 DI 注册该类?
【问题讨论】:
-
看看内存缓存如何注册自己here
标签: asp.net asp.net-core