2011-11-24 67 views
1

考虑这个代码城堡IInitializable例外:不会传播

public class A 
{ 
    public B b { get; set; } 
} 

public class B : IInitializable 
{ 
    #region IInitializable Members 

    public void Initialize() 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     WindsorContainer container = new WindsorContainer(); 
     container.Register(Component.For<A>()); 
     container.Register(Component.For<B>()); 

     try 
     { 
      A a = container.Resolve<A>(); 
      // goes here and a.b is null !!! 
     } 
     catch (Exception ex) 
     { 
      // never goes here :(
      Console.WriteLine(ex); 
     } 
    } 
} 

我本来期望的NotImplementedException传播到主钩。 取而代之的是windsor和a.b属性为空的例外...

任何想法让我的异常正确传播?

+0

为什么你想要这个异常,为什么不是B的强制性依赖? –

回答

0

这是设计。您正在解析A,其中B具有可选相关性。温莎无法解决B,因为异常的,所以将其视为不可分辨的,并且因为它是一个可选的依赖,也没有任何错误,它只是进行,而无需进B.

Here's a very similar situation, along with a workaround