我一直在阅读依赖注入,并且阅读了很多关于如何通过构造函数注入接口的内容。它如何知道接口使用什么类型的映射?例如,如果我有一个名为 ProtienService 的服务和另一个名为 VitaminService 的服务,它们都实现了一个名为 ISupplement Service 的接口,然后我可以将一个 ISupplement Service 注入到我的控制器中,但我不确定它是如何知道是否使用 Protein或维生素服务。这是否仅取决于所使用的 ioc 类型?任何建议都会受到赞赏,因为我对此有点困惑。
问问题
93 次
1 回答
1
你告诉容器使用什么。所以在结构图中:
For<ISupplement>()
.Use<VitaminService>();
当使用 ISupplement 接口时,告诉容器使用 VitaminService。
您可以注册多个实现:
For<ISupplement>().Use<VitaminService>().Named("V");
For<ISupplement>().Use<ProteinnService>().Named("P");
但在这种情况下,您需要告诉容器您想要哪个实现:
Container.GetInstance<ISupplement>("V");
于 2013-04-10T05:40:22.263 回答