2011-07-11 38 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

我只想將靜態字符串替換爲某個變量值,因此如果稍後有人更改構造函數變量標識符,它不會破壞我的代碼。 –