2

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

4

2 回答 2

2

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

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

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

于 2009-08-02T20:56:27.263 回答
1

Castle Windsor 将自动使用它知道如何填充的公共设置器填充任何属性。

这意味着如果你有一堂课

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

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

有时我发现这种默认行为很麻烦。 该设施将使您对过程进行更细粒度的控制。

于 2009-08-03T18:05:24.710 回答