我有一个依赖注入设置,我在其中注册了一个名为MyClass
的服务,该服务实现MyInterface
如下:
ServiceCollection.AddSingleton<MyClass>();
然后,我通过在ServiceCollection
上调用扩展方法BuildServiceProvider
来创建IServiceProvider。
如何使IServiceProvider.GetRequiredService<MyInterface>()
返回MyClass
的实例化单例实例?当前它返回 null。
默认容器实现在为该接口注册返回时执行此操作:
ServiceCollection.AddSingleton<MyInterface, MyClass>();
这是注册服务的首选方式,因此所有需要它的组件都需要接口而不是实现。
其他容器实现 (AutoFac( 也支持已实现接口的自动注册(例如 .AsImplementedInterfaces()
(,但上述截取的代码应该适用于所有支持 ASP.NET Core DI 抽象的容器。