【发布时间】:2020-04-14 08:42:53
【问题描述】:
我在自己的爱好项目中使用 ASP.NET Core,我想创建一个可供开发人员使用的框架,并且我想允许可选服务并在未注册的情况下使用默认值。
我收到Unable to resolve service for type 'XXX' 错误,但我希望 DI 返回null 而不是抛出异常。
我想允许可选服务,所以如果找到服务,在构造函数中使用它,如果没有找到,将 null 传递给构造函数。
在我的实现中,我有:
public IServiceManager(IService service, ...)
{
_service = service ?? new DefaultService();
...
}
如您所见,如果找不到服务(null),则使用默认值。 也许我误解了 DI 的工作原理。也许我可以使用工厂来代替? 但是,在我的系统中,我在未提供时使用默认服务是很常见的,因此我需要一个不需要 API 使用者注册服务的解决方案。
有没有办法将 ASP.NET Core DI 配置为返回 null 而不是抛出异常?
【问题讨论】:
-
您是否从
IServiceCollection获得您想要解决的服务?
标签: c# dependency-injection asp.net-core