0

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

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

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

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

我们目前使用的是 ServiceStack 版本 4.0.33

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

4

1 回答 1

1

ServiceStack 的 IOC 中的 AutoWiring 使用预编译的表达式来填充所有公共实例属性。在创建静态工厂时,它还不知道所有已注册的依赖项,因此创建的工厂会自动装配每个公共可写属性。

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

container.Register<IDependency>(c => new Dependency(c.Resolve<IFoo>()) {
        Bar = c.Resolve<IBar>()
    })
于 2015-02-27T15:57:18.430 回答