依赖注入如何知道在注入接口时使用哪种类型的映射

时间:2013-04-10 05:34:40

标签: dependency-injection inversion-of-control ninject autofac

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

1 个答案:

答案 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");