我在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%中创建了一个新实例?
答案 0 :(得分:0)
所以我尝试了这一点,发现每次用GetInstance
调用ExplicitArguments
时,都会创建一个新的唯一对象。但每次我在没有任何参数的情况下调用GetInstance
时,都会返回单例引用。