ASP.NET Core 5 - 如何拥有可选的依赖项?

Leo*_*rdo 5 .net c# dependency-injection asp.net-core-middleware

我正在开发一个中间件,我希望它对内部日志记录库具有可选的依赖关系。换句话说,如果MyLoggingService已注册,那就太好了!否则,生活将继续,并会登录到控制台。

但是通过声明public async Task Invoke(HttpContext httpContext, MyLoggingService logger),我收到一个运行时错误,指出它尚未注册。我尝试将默认值设置为null但没有用。另外,因为它是一个中间件,所以我无法重载该Invoke方法。

除了自己请求服务收集并解决依赖之外,还有其他解决方案吗?

Leo*_*rdo 7

答案非常简单:

public async Task Invoke(HttpContext httpContext, MyLoggingService logger = null)
Run Code Online (Sandbox Code Playgroud)