【问题标题】:ServiceStack Funq Container setting public Members to nullServiceStack Funq 容器将公共成员设置为空
【发布时间】:2015-02-27 14:33:05
【问题描述】:

我们开发团队的一些成员刚刚花了一些时间调试一个类似的问题。

在我们的一个单元测试中使用的 RegisterAs 类有一个公共成员:public List Mails { get;放; }

当这个类通过 Funq 解析时,成员被设置为 null,即使它是在构造函数中设置的。

我们的团队成员同意,当该成员不是注册为 Container.RegisterAs 的类型时,Funq 将此成员设置为 null 是很奇怪的。

我们目前使用的是 ServiceStack 4.0.33 版

如果他们不实现在 Funq 中注册的接口,那么能够将 ServiceStack.Funq 配置为接触公共成员会很好。

【问题讨论】:

    标签: c# servicestack inversion-of-control funq


    【解决方案1】:

    ServiceStack 的 IOC 中的 AutoWiring 使用预编译的表达式到 populate all public instance properties。在创建静态工厂时,它并不知道所有已注册的依赖项,因此创建的工厂会自动装配每个公共可写属性。

    当您想要不同的行为时,您可以使用自己的工厂,例如:

    container.Register<IDependency>(c => new Dependency(c.Resolve<IFoo>()) {
            Bar = c.Resolve<IBar>()
        })
    

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 2014-09-22
      • 1970-01-01
      • 2018-03-30
      相关资源
      最近更新 更多