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