【发布时间】:2020-06-09 19:51:04
【问题描述】:
如果我使用Inject 属性并尝试注入未注册的服务,它会给我错误There is no registered service of type X。
那么我怎样才能在不给我这个错误的情况下注入服务,如果没有注入服务,服务将只是空的。这可能吗?
例如
如果Foo 没有注册,这会给我一个错误。
[Inject]
protected Foo Foo { get; set; }
但我想允许 Foo 未注册,在这种情况下它将是 null。
【问题讨论】:
-
这当然像是一个 XY 问题。扩展为什么(你认为)你需要它,你可能会得到更好的选择。
-
@HenkHolterman 这不是 XY 问题,我可以解释为什么我需要这个,但我想知道,你能想出一个需要可选服务的情况吗?
-
在应用程序级别:不,我不允许这样做。在图书馆里这可能是有道理的,但我会非常努力地避免这种情况。
-
@HenkHolterman 你几乎是对的。它不是库,而是我公司中许多使用 blazor 的应用程序的共享内核。而且我在我的组件中注入了一个“全局加载”服务,这样它就可以观察应用程序任何加载状态的变化,并在需要时设置它自己的加载。但我没有想到的是,并不是所有的应用程序都会有这种“全局加载”。 2 个应用程序已经在使用它,但现在会有一个不会使用它。所以现在我需要找到一种方法来继续在组件中使用它,但在没有实现该服务时不要给出任何错误。
标签: c# asp.net-core blazor