我创建了一个实现多个接口的服务,并试图在 ASP.Net Core 中使用 DI 注册它。就我而言,我希望服务是Singleton,并且在请求任何已实现的接口时,消费者会收到相同的实例。
简而言之,我想要类似的东西
class Impl: IService1, IService2 { }
...
services.AddSingleton<IService1, IService2, Impl>();
...
public SomeController(IService1 service1, IService2 service2)
{
service1 == service2 // true, потому что это один и тот-же экземпляр
}
我怎样才能做到这一点?
您可以将实现本身注册为服务(使用实现本身具有的类型)并使用该服务来检索各个接口的实现。
从字面上看,像这样:
这也应该适用于
Scoped-services。