Виндзорский компонент для не работает как переходный процесс - PullRequest
1 голос
/ 01 августа 2011

Мы используем windsor для регистрации экземпляра для интерфейса IUnitOfWork. UnitOfWorkContainer.Current - это статический метод, который возвращает экземпляр IUnitOfWork.

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

Проблема в том, UnitOfWorkContainer.Current называется только один.

1 Ответ

4 голосов
/ 01 августа 2011

You're doing it wrong

Вы даете Виндзору уже существующий экземпляр.Следовательно, он не создает его - он повторно использует экземпляр, который вы ему дали.

Другими словами, ваш код может быть переписан в эквивалент:

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

Я думаю, что вы на самом делеимелось ввиду:

 container.Register(Component.For<IUnitOfWork>()
            .UsingFactoryMethod(() => UnitOfWorkContainer.Current)
                .LifeStyle.Transient);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...