无法解决依赖关系时抛出异常

时间:2011-07-18 22:00:31

标签: c# .net dependency-injection castle-windsor

考虑以下课程:

public class ComponentA
{
    public ComponentB ComponentB { get; set; }

    public ComponentA(ComponentC componentC) { ... }
}

当我解析ComponentA时,Castle会正确地注入ComponentBComponentC

但是,如果在实例化ComponentB时出现问题,则会吞下该异常,从而导致延迟错误(NullReferenceException)。

我理解两种方法之间的区别,但是当注入属性出现问题时,是否可能使其失败(或者至少记录完整的异常)?

2 个答案:

答案 0 :(得分:1)

基于Mauricio's answer基于Phil关联的问题,我创建了一个StrictComponentActivator,即使依赖项是可选的,也不会吞下异常。

按预期工作。

答案 1 :(得分:0)

我相信这是预期的行为,AFAIK没有办法绕过它。

一个选项可能是使用ComponentB的私有成员设置为默认实现(如果需要,则会在访问时抛出异常),但如果解析成功则被容器覆盖。

private ComponentB _b = new ExceptionThrowingComponentB();

public ComponentB B
{
   get { return _b; }
   set { _b = value; }
} 

<击>

正如斯维克所说:不是一个好的解决方案。

编辑:我不确定我是否理解所有内容,但听起来您可以更改此行为:

Castle Windsor strange behaviour wth property injection and factory method