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