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

そこで、これを試してみると、で呼び出すたびに、新しい一意のオブジェクトが作成されることがわかりましGetInstanceExplicitArgumentsGetInstanceしかし、引数なしで呼び出すたびに、シングルトン参照が返されました。

于 2012-12-31T11:04:35.610 に答える