我是使用城堡windsor的初学者;有点介绍Apress Pro Mvc的书。在我工作的项目中;我使用castlewindsor控制器工厂代替mvc控制器工厂;所以我可以有参数化构造函数,我可以注入依赖项。 有没有办法告诉windsorcontroller工厂将值注入控制器类的属性而不通过构造函数? 我想这样做的原因是因为我有Logging依赖;电子邮件依赖;数据库依赖;主题引擎dEpendency;我不想在构造函数中使用这么多参数参数。
答案 0 :(得分:2)
默认情况下,当Windsor解析服务实现时,它将使用它可以满足的公共setter填充所有属性。
但是,请注意,有时将依赖项解析放在构造函数中是有意义的,因为它保证任何实例始终处于有效状态。考虑单元测试场景,编写测试的人会对需要知道应该提供哪些依赖关系感到疯狂。当所有依赖关系进入c'tor时,测试人员别无选择,只能为测试的实例提供所有必需的依赖关系(如存根或模拟)。
无论如何,至于你的问题,Windsor默认支持C'tor 和属性注入
答案 1 :(得分:1)
Castle Windsor将自动使用知道如何填充的公共制定者来填充任何属性。
这意味着如果你有一个班级
public MyClass {
public SomeDependency {get; set;}
}
只要容器配置为知道如何解析SomeDependency,它就会尝试解析并注入它。
有时我发现这种默认行为很麻烦。 This facility将为您提供更精细的控制。