1

StructureMap で ObjectFactory.Getinstance() を呼び出すたびに、オブジェクトの新しいインスタンスが必要です。私はそれを見つけることも、自分で理解することもできませんでした。

AlwaysUnique はそれを行っていません。

[TestMethod]
public void GetConcreteInstanceOf_ShouldReturn_DifferentInstance()
{
  ObjectFactory.Initialize(registry =>
  {
    // setup the singleton, so that it's new every time
    registry.For<ISystemData>().AlwaysUnique().Use(new SystemDataClient());
  });

  ISystemData result = ObjectFactory.GetInstance<ISystemData>();
  ISystemData result2 = ObjectFactory.GetInstance<ISystemData>();
  Assert.AreNotSame(result, result2);
}
4

2 に答える 2

4

毎回新しいインスタンスが必要な場合は、定義上、シングルトンは必要ありません。インスタンスを渡す代わりに、具象型を指定するだけで、StructureMap のデフォルトの動作により毎回新しいインスタンスが提供されます。

registry.For<ISystemData>().Use<SystemDataClient>();
于 2012-11-30T03:48:55.703 に答える
1

すでに受け入れられている回答に干渉する貪欲なコンストラクターがある場合は、これを使用することもできます。

registry.For<ISystemData>().Use(() => new SystemDataClient());
于 2013-03-12T16:15:33.153 に答える