简单的注射器IsRegistered方法?

问题描述 投票:0回答:1

我正在尝试将 Simple Injector 集成到我们的应用程序中,我需要找到一种方法来实现 IsRegistered 方法以查看类型是否已在容器中注册。我怎样才能实现这个?

c# dependency-injection ioc-container simple-injector
1个回答
2
投票

使用简单注入器执行此操作的方法是调用

GetRegistration
方法:

bool isRegistered = container.GetRegistration(serviceType) != null;

可以通过在代码库中添加以下扩展方法来简化此操作:

public static bool IsRegistered(this Container container, Type serviceType)
{
    return container.GetRegistration(serviceType) != null;
}

我们决定不在 Simple Injector 中包含这样的

IsRegistered
方法,因为我们觉得在正常情况下你不应该需要它。

不必查询类型是否存在,通常更好的是确保始终有一个注册的实现,即使没有什么可实现的。注册一个空实现(空对象模式的实现,不要与空引用混淆)。注入空对象使使用代码更容易,并使测试更容易,因为依赖关系只是必需的,并且您将丢失空检查和对

IsRegistered
的调用。

© www.soinside.com 2019 - 2024. All rights reserved.