温莎城堡也填充了类字段

时间:2009-08-02 20:22:56

标签: asp.net-mvc castle-windsor castle

我是使用城堡windsor的初学者;有点介绍Apress Pro Mvc的书。在我工作的项目中;我使用castlewindsor控制器工厂代替mvc控制器工厂;所以我可以有参数化构造函数,我可以注入依赖项。 有没有办法告诉windsorcontroller工厂将值注入控制器类的属性而不通过构造函数? 我想这样做的原因是因为我有Logging依赖;电子邮件依赖;数据库依赖;主题引擎dEpendency;我不想在构造函数中使用这么多参数参数。

2 个答案:

答案 0 :(得分:2)

默认情况下,当Windsor解析服务实现时,它将使用它可以满足的公共setter填充所有属性。

但是,请注意,有时将依赖项解析放在构造函数中是有意义的,因为它保证任何实例始终处于有效状态。考虑单元测试场景,编写测试的人会对需要知道应该提供哪些依赖关系感到疯狂。当所有依赖关系进入c'tor时,测试人员别无选择,只能为测试的实例提供所有必需的依赖关系(如存根或模拟)。

无论如何,至于你的问题,Windsor默认支持C'tor 属性注入

答案 1 :(得分:1)

Castle Windsor将自动使用知道如何填充的公共制定者来填充任何属性。

这意味着如果你有一个班级

public MyClass {
  public SomeDependency {get; set;}
}

只要容器配置为知道如何解析SomeDependency,它就会尝试解析并注入它。

有时我发现这种默认行为很麻烦。 This facility将为您提供更精细的控制。