1

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

4

1 回答 1

0

所以我尝试了这个,发现每次我用 调用GetInstanceExplicitArguments,都会创建一个新的唯一对象。但是每次我GetInstance不带任何参数调用时,都会返回单例引用。

于 2012-12-31T11:04:35.610 回答