1

ウィンザーを使用して、IUnitOfWorkインターフェースのインスタンスを登録しています。UnitOfWorkContainer.CurrentIUnitOfWorkのインスタンスを返す静的メソッドです。

 container.Register(Component.For<IUnitOfWork>()
            .Instance(UnitOfWorkContainer.Current)
                .LifeStyle.Transient);

問題はUnitOfWorkContainer.Current1つだけと呼ばれます。

4

1 に答える 1

4

あなたはそれを間違っています

Windsorに既存のインスタンスを提供しています。したがって、それを作成するのではなく、指定したインスタンスを再利用します。

言い換えれば、あなたのコードは同等のものに書き直すことができます:

var theOneAndOnly = UnitOfWorkContainer.Current;
 container.Register(Component.For<IUnitOfWork>()
            .Instance(theOneAndOnly)
                .LifeStyle.Transient);

あなたが本当に意味したのは:

 container.Register(Component.For<IUnitOfWork>()
            .UsingFactoryMethod(() => UnitOfWorkContainer.Current)
                .LifeStyle.Transient);
于 2011-08-01T08:21:08.567 に答える