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