【发布时间】:2019-07-23 06:40:50
【问题描述】:
我想对在其构造函数中采用接口 IService 的类使用依赖注入。但是我有这个接口的几个实现。 其他类也需要这两种实现,所以我不能简单地只启动需要的一种。 我正在使用 Microsoft.Extensions.DependencyInjection
这是一个尝试显示我的课程的示例
public interface IService { }
public class ServiceA : IService { ... }
public class ServiceB : IService { ... }
public class Foo
{
public Foo(IService service) { }
}
public class Bar
{
public Bar(IService service) { }
}
如果我没有几个实现,我会像下面这样注入它:
builder.Services.AddSingleton<IService, ServiceA>();
builder.Services.AddSingleton<Foo>();
在示例中,我需要使用 ServiceA 初始化 Foo,使用 ServiceB 初始化 Bar。
【问题讨论】:
-
您将不得不进一步隔离您的 iterfaces,因此您的层次结构如下:
ServiceA->IServiceA->IService。然后在注册时你会将你的服务绑定到 IServiceA 而不是 IService