1

次のようなMVC4コントローラーがあります。

public MyThingyController 
{
  IThingy thingy1;
  IThingy thingy2;

  public MyClass(IThingy thingy1, IThingy thingy2) {
    this.thingy1 = thingy1;
    this.thingy2 = thingy2;
  }
}

IThingy には 2 つの異なる具体的な実装があり、それらの間をゆっくりと移動したいと考えています。

ninject では、コンテキスト バインディングを使用します

しかし、私のGoogle fooは、StructreMapで同等のものを見つけるための検索で完全に失敗しています

そして、私は StructureMap を次のように設定したいと思います:

public class IocConfig
{
  public static IContainer GetCommonServiceLocator()
  {
    ObjectFactory.Initialize(x =>
      {
        x.For<IThingy>()
             .Use<LegacyThingy>();
        x.For<IThingy>()
             .Use<ShinyNewThingy>();
      });
    return ObjectFactory.Container;
  }
}
4

1 に答える 1

2

これは仕事をするはずです:

x.For<MyThingyController>() 
// or better interface 
// x.For<IMyThingyController>()
   .Use<MyThingyController>()
    .Ctor<IThingy>("thingy1")
     .Is<LegacyThingy>()
    .Ctor<IThingy>("thingy2")
     .Is<ShinyNewThingy>();
于 2013-06-26T04:07:45.820 に答える