2011-07-11 37 views
0

我正在使用Ninject在我的应用程序中实现IoC/DI。它在整个应用程序中一直运行良好,除了一种情况,我在其中设置了User Defined Class类型的构造函数参数。Ninject将方法set构造方法的参数设置为null

该类有四个属性,它们都是用户定义类型的类型,它们都是序列化的枚举。

现在,当我解决内核的依赖关系时,它将引发异常作为构造函数参数值设置为null。我不知道为什么。

是因为seriazlizeable枚举或别的东西。我无法改变我的类型,所以请在我不需要改变类型的情况下给我一些建议。

编辑

IManager manager = GlobalData.Kernel.Get<IManager> (new ConstructorArgument("context", Context)); 
// Context Class code is here 
public class Context { 
    public string ContextCode { get; set; } 
    public Module Module { get; set; } 
    public Screen Screen { get; set; } } 

模块和屏幕是可序列化枚举

+1

你可以添加代码示例吗? –

+0

IManager manager = GlobalData.Kernel.Get (new ConstructorArgument(“context”,Context));上下文类代码在这里公共类上下文 { public string ContextCode {get;组; } public Module Module {get;组; } public Sc​​reen Screen {get;组; } }模块和屏幕是可序列化的枚举 –

回答

0

那是因为你的上下文传递给get作为构造参数为空。

+0

不,我在将它传递给Get方法之前检查它,它不为空,问题是我传递给ConstructorArgument的变量名称与类 中的类型不相似 public class a (Context ConsArg) } 和我使用 ConstructorArgument(“ConsArg”,context); 问题是构造器参数的情况下灵敏 感谢您的输入 圣雷莫,如果你认为我的东西,所以这种静态的字符串依赖性解决这将是非常有益的。 –

+1

我只能说是为上下文指定绑定。对于更多信息,您的帖子中很少有信息。 –

+0

我只想将静态字符串替换为某个变量值,因此如果稍后有人更改构造函数变量标识符,它不会破坏我的代码。 –