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 に答える