【问题标题】:windsor component for is not working as transient温莎组件不能作为瞬态工作
【发布时间】:2011-10-17 05:14:14
【问题描述】:
我们正在使用 windsor 为 IUnitOfWorkinterface 注册一个实例。 UnitOfWorkContainer.Current 是一个返回 IUnitOfWork 实例的静态方法。
container.Register(Component.For<IUnitOfWork>()
.Instance(UnitOfWorkContainer.Current)
.LifeStyle.Transient);
问题是UnitOfWorkContainer.Current 只被称为。
【问题讨论】:
标签:
castle-windsor
ioc-container
transient
【解决方案1】:
你正在给温莎一个预先存在的实例。因此它不是在创建它——它是在重用你给它的实例。
换句话说,您的代码可以重写为等效代码:
var theOneAndOnly = UnitOfWorkContainer.Current;
container.Register(Component.For<IUnitOfWork>()
.Instance(theOneAndOnly)
.LifeStyle.Transient);
我认为你真正的意思是:
container.Register(Component.For<IUnitOfWork>()
.UsingFactoryMethod(() => UnitOfWorkContainer.Current)
.LifeStyle.Transient);