我们的devteam的一些成员刚刚花了一些时间调试一个类似的问题。
在我们的一个单元测试中使用的RegisterAs类有一个公共成员:公共列表邮件{ get;set;}
当通过Funq解析该类时,成员被设置为null,即使它是在构造函数中设置的。
我们的团队成员一致认为,当成员不是注册为Container.RegisterAs<>的类型时,Funq将该成员设置为null。
我们目前使用的是ServiceStack版本4.0.33
如果公共成员不实现在Funq中注册的接口,那么配置ServiceStack.Funq使其不触及公共成员将是一件好事。
发布于 2015-02-27 15:57:18
ServiceStack的IOC中的AutoWiring对填充所有公共实例属性。使用了一个预编译表达式。在创建静态工厂时,它还不知道存在的所有已注册依赖项,因此创建的工厂自动生成每个公共可写属性。
当你想要不同的行为时,你可以使用你自己的工厂,例如:
container.Register<IDependency>(c => new Dependency(c.Resolve<IFoo>()) {
Bar = c.Resolve<IBar>()
})https://stackoverflow.com/questions/28767487
复制相似问题