2011-08-01 64 views
1

我們使用windsor爲IUnitOfWork接口註冊實例。 UnitOfWorkContainer.Current是一個返回IUnitOfWork實例的靜態方法。windsor組件用於暫時不工作

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

問題是UnitOfWorkContainer.Current被稱爲唯一的。

回答

4

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);