0

次のオブジェクトがあります。

CommandA (Singleton)
    IFoo Foo (PerRequest)

Foo を呼び出すと、リクエストに固有の foo オブジェクトが返されるように、プロキシ オブジェクトをシングルトンに挿入したいと考えています。

これは可能ですか?

4

2 に答える 2

2

設計上、シングルトン内のすべてのインジェクションはシングルトンにする必要があります。まず、CommandAシングルトンの場合、注入されるオブジェクトはシングルトンになります。
リクエストごとに新しいオブジェクトが必要だと言うなら、おそらく CommandA に Factory (Singleton) があり、呼び出しごとに新しいオブジェクトを作成するか、プロキシ参照を取得します。

それが役立つことを願っています!

于 2012-10-04T17:08:34.820 に答える
1

安州が言うように、あなたは本当に工場での行動を求めているようですね。それを実装する 1 つの方法は次のようになります。

コマンド:

public class Command : ICommand
{
   private Func<IFoo> _fooProvider;

   public Command(Func<IFoo> fooProvider){ _fooProvider = fooProvider; }

   public IFoo Foo { get{ return _fooProvider(); }}
}

あなたの構成では:

For<ICommand>().Singleton().Use<Command>();
For<IFoo>().Use<Foo>();

IFoo が設定されているため、StructureMap は Func を自動的に注入します。

于 2012-10-06T09:20:30.340 に答える