0

我一直在阅读依赖注入,并且阅读了很多关于如何通过构造函数注入接口的内容。它如何知道接口使用什么类型的映射?例如,如果我有一个名为 ProtienService 的服务和另一个名为 VitaminService 的服务,它们都实现了一个名为 ISupplement Service 的接口,然后我可以将一个 ISupplement Service 注入到我的控制器中,但我不确定它是如何知道是否使用 Protein或维生素服务。这是否仅取决于所使用的 ioc 类型?任何建议都会受到赞赏,因为我对此有点困惑。

4

1 回答 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 回答