我一直在阅读依赖注入,我读了很多关于如何通过构造函数拒绝接口的内容。它如何知道用于接口的映射类型?例如,如果我有一个名为ProtienService的服务和另一个名为VitaminService的服务,它们都实现了一个名为ISupplement Service的接口,然后我可以将一个ISupplement服务注入我的控制器,例如,但我不知道它是如何知道是否使用Protein或维生素服务。这仅仅取决于所使用的ioc的类型吗?任何建议都表示赞赏,因为我对此感到有些困惑。
答案 0 :(得分:1)
告诉容器使用什么。所以在Structuremap中:
For<ISupplement>()
.Use<VitaminService>();
告诉容器在使用ISupplement接口时使用VitaminService。
您可以注册多个实现:
For<ISupplement>().Use<VitaminService>().Named("V");
For<ISupplement>().Use<ProteinnService>().Named("P");
但在这种情况下,您需要告诉容器您想要的实现:
Container.GetInstance<ISupplement>("V");