我们正在使用windsor为IUnitOfWork
接口注册实例。 UnitOfWorkContainer.Current
是一个静态方法,它返回IUnitOfWork的一个实例。
container.Register(Component.For<IUnitOfWork>()
.Instance(UnitOfWorkContainer.Current)
.LifeStyle.Transient);
问题是UnitOfWorkContainer.Current
仅被称为问题。
答案 0 :(得分: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);