【问题标题】: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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      相关资源
      最近更新 更多