如果Windsor无法解析属性,我如何告诉Windsor?

时间:2011-07-04 17:45:05

标签: c# dependency-injection castle-windsor

说我有以下课程

    public class TestA
    {
        public string Blah { get; set; }
    }

    public class TestB
    {
        public TestA Testing { get; set; }
    }

所以说我希望Windsor给我一个TestB的实例,但我也希望它使用属性注入来实例化TestB.Testing属性。这部分很简单,但我需要一种方法来了解TestA的Windsor注册是否已被删除。

有没有办法标记Testing属性,以便Windsor知道TestATestB的依赖关系,因此如果无法解析Testing则会出错。 1}}属性?我不想使用TestB构造函数,因为我正在寻找降低构造函数膨胀的方法。

1 个答案:

答案 0 :(得分:4)

如果它是强制依赖,它应该进入构造函数期间。否则,您将允许实例化无效组件,这与Windsor或IoC无关。

“构造函数膨胀”有时可能是代码需要重构的标志,它可能已经获得了太多的责任。

编辑:如果您真的知道您正在做什么,您可以使用component model contributor“手动”将依赖关系更改为可选或必需。我认为这应该只用于你无法控制的代码,几乎从不用于你自己的代码。