对于使用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);
}
答案 0 :(得分:4)
如果您每次都想要一个新实例,那么根据定义,您不需要单个实例。不要传递实例,只需指定具体类型,StructureMap的默认行为每次都会为您提供一个新实例:
registry.For<ISystemData>().Use<SystemDataClient>();
答案 1 :(得分:1)
如果你有一个贪婪的构造函数干扰已经接受的答案,你也可以使用它:
registry.For<ISystemData>().Use(() => new SystemDataClient());