Ninject不会传播异常

时间:2011-09-15 16:48:52

标签: c# exception dependency-injection inversion-of-control ninject

我正在使用Ninject创建一个具有构造函数参数的类实例。此类检查它的参数值,如果它无效,则抛出异常。我面临的唯一问题是Ninject吞下异常并为我的对象返回null。我想像c#中的其他异常一样传播我的excpetion。有没有办法做到这一点?

代码看起来像这样(只是一个例子,这不是实际的代码)



    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
       }
    }


1 个答案:

答案 0 :(得分:2)

我无法重现此行为。至少当前发布的版本会将异常抛出给调用者。此外,您的代码甚至不会编译,因为null与ConstructorArgument

的参数不明确