我可以为接口制作IServiceProvider.GetService返回实现吗?



我有一个依赖注入设置,我在其中注册了一个名为MyClass的服务,该服务实现MyInterface如下:

ServiceCollection.AddSingleton<MyClass>();

然后,我通过在ServiceCollection上调用扩展方法BuildServiceProvider来创建IServiceProvider。

如何使IServiceProvider.GetRequiredService<MyInterface>()返回MyClass的实例化单例实例?当前它返回 null。

默认容器实现在为该接口注册返回时执行此操作:

ServiceCollection.AddSingleton<MyInterface, MyClass>();

这是注册服务的首选方式,因此所有需要它的组件都需要接口而不是实现。

其他容器实现 (AutoFac( 也支持已实现接口的自动注册(例如 .AsImplementedInterfaces() (,但上述截取的代码应该适用于所有支持 ASP.NET Core DI 抽象的容器。

相关内容

  • 没有找到相关文章

最新更新