在Singleton生存期映射上调用GetInstance是返回单例还是创建新实例?

时间:2012-12-26 16:54:58

标签: .net structuremap

我在ObjectFactory.Initialize方法中有以下映射:

expression.For<IFoo>().Singleton()
                      .Use<SomeFoo>()
                      .Ctor<string>("url").Is(<fetch from config>)
                      .Ctor<string>("username").Is(<fetch from config>)

这可以确保我声明IFoo作为依赖项的类始终获得相同的实例。

但是在我的应用程序中有一个场景,我需要模拟SomeFoo对象对特定用户的行为方式。我使用GetInstance创建依赖项,如下所示:

var args = new ExplicitArguments();
args.SetArg("url", <dynamic url>);
args.SetArg("user", <logged in user>);

ObjectFactory.GetInstance<IFoo>(args);

我希望这个带有特定参数的调用会构造一个新对象,而不是返回对单例的引用。

在这种情况下会发生什么?为什么?我需要为90%的案例维护单例,但是在罕见的10%中创建了一个新实例?

1 个答案:

答案 0 :(得分:0)

所以我尝试了这一点,发现每次用GetInstance调用ExplicitArguments时,都会创建一个新的唯一对象。但每次我在没有任何参数的情况下调用GetInstance时,都会返回单例引用。