我在方法中有以下映射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% 中创建一个新实例?