gpt4 book ai didi

c# - 如何使用 Microsoft.Extension.DependencyInjection 允许可选服务?

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:27 25 4
gpt4 key购买 nike

我在自己的爱好项目中使用 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 而不是抛出异常?

最佳答案

在构造函数中为该参数添加默认值。

public IServiceManager(IService service = null, ...)
{
_service = service ?? new DefaultService();
...
}

关于c# - 如何使用 Microsoft.Extension.DependencyInjection 允许可选服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com