ServiceStack Funq Container setting public Members to null
ServiceStack Funq Container setting public Members to null
我们开发团队的一些成员刚刚花了一些时间调试类似的问题。
在我们的一个单元测试中使用的 RegisterAs class 有一个 public 成员:public List Mails { get;放; }
当这个 class 通过 Funq 解析时,该成员被设置为 null,即使它是在构造函数中设置的。
我们的团队成员一致认为,当该成员不是注册为 Container.RegisterAs<> 的类型时,Funq 将该成员设置为 null 是很奇怪的。
我们目前使用的是 ServiceStack 版本 4.0.33
能够将 ServiceStack.Funq 配置为 not touch public 成员如果他们没有实现在 Funq 中注册的接口,那就太好了。
ServiceStack的IOC中的AutoWiring使用预编译表达式populate all public instance properties。在创建静态工厂时,它不知道所有已注册的依赖项,因此创建的工厂自动装配每个 public 可写 属性.
当您想要不同的行为时,您可以使用自己的工厂,例如:
container.Register<IDependency>(c => new Dependency(c.Resolve<IFoo>()) {
Bar = c.Resolve<IBar>()
})
我们开发团队的一些成员刚刚花了一些时间调试类似的问题。
在我们的一个单元测试中使用的 RegisterAs class 有一个 public 成员:public List Mails { get;放; }
当这个 class 通过 Funq 解析时,该成员被设置为 null,即使它是在构造函数中设置的。
我们的团队成员一致认为,当该成员不是注册为 Container.RegisterAs<> 的类型时,Funq 将该成员设置为 null 是很奇怪的。
我们目前使用的是 ServiceStack 版本 4.0.33
能够将 ServiceStack.Funq 配置为 not touch public 成员如果他们没有实现在 Funq 中注册的接口,那就太好了。
ServiceStack的IOC中的AutoWiring使用预编译表达式populate all public instance properties。在创建静态工厂时,它不知道所有已注册的依赖项,因此创建的工厂自动装配每个 public 可写 属性.
当您想要不同的行为时,您可以使用自己的工厂,例如:
container.Register<IDependency>(c => new Dependency(c.Resolve<IFoo>()) {
Bar = c.Resolve<IBar>()
})