0

我正在使用Ninject創建具有構造函數參數的類的實例。這個類檢查它的參數值,如果它是無效的,它會拋出一個異常。我面臨的唯一問題是Ninject吞噬異常併爲我的對象返回null。我希望我的excletion像c#中的其他異常一樣傳播。有沒有辦法做到這一點?Ninject不會傳播異常

的代碼看起來像這樣(只是一個例子,這是不實際的代碼)

 


    public class Module : NinjectModule 
    { 
     public override void Load() 
     { 
      Bind<IMyClass>().To<MyClass>(); 
     } 
    } 

    public class MyClass : IMyClass 
    { 
     public MyClass(object value) 
     { 
      if(value == null) 
       throw new ArgumentNullException("value"); 
     } 
    } 

    public class Program 
    { 
     public void Method() 
     { 
      object myObject = null; 
      IMyClass instance = GetKernel(). 
       Get<IMyClass>(new ConstructorArgument("value", myObject)); 

      // here the instance variable is null and my 
      // exception has been swallowed 
     } 
    } 

 

回答

2

我無法重現此問題。至少當前發佈的版本會向調用者拋出異常。另外,你的代碼甚至不會編譯,因爲null與ConstructorArgument的參數不一致。

+0

然後我會嘗試更新到最新版本。代碼只是我在寫這個問題時想到的一個例子,它不是實際的代碼......但感謝您指出這一點,我會解決它 – rarrosi