我有一个Dependancy Injection设置,我在其中注册一个名为func strategy(addr Addr) bool {
if addr == ... {
return true
}
return false
}
func main(){
addr := first(strategy)
}
的服务,实现MyClass
,如下所示:
MyInterface
然后我通过调用ServiceCollection.AddSingleton<MyClass>();
上的扩展方法BuildServiceProvider
创建一个IServiceProvider。
如何让ServiceCollection
返回IServiceProvider.GetRequiredService<MyInterface>()
的实例化单例实例?目前它返回null。
答案 0 :(得分:1)
默认容器实现在注册为该接口返回实现时执行此操作:
ServiceCollection.AddSingleton<MyInterface, MyClass>();
这是注册服务的首选方式,因此需要它的所有组件都需要接口而不是实现。
其他容器实现(AutoFac)也支持自动注册已实现的接口(例如.AsImplementedInterfaces()
),但上面的代码段被认为适用于支持ASP.NET Core DI抽象的所有容器。