一個類有一個以IMyInterface爲參數的獨特構造函數。如果我定義了IMyInterface的具體類型並將其註冊到StructureMap,那麼就沒有問題,我的類可以通過這個具體類型來實例化。如何使用StructureMap將默認構造函數參數設置爲null?
但是,在某些情況下,沒有具體的類型將被註冊。在這種情況下,我想爲IMyInterface參數收到null。相反,我得到一個異常:
StructureMap異常代碼:202 沒有默認實例爲PluginFamily IMyInterface定義。
是否可以爲缺少的插件定義默認值?
上下文:我的類是一個服務,它使用Spark視圖引擎並定義一些默認名稱空間。該服務使用ISparkNamespacesProvider(IMyInterface)添加輔助名稱空間。客戶端應用程序可以註冊這樣的提供者或不註冊。這就是爲什麼該服務的構造函數將收到提供者或沒有提供者。
null必須轉換爲IMyInterface以避免模糊的調用。不幸的是它不起作用。當我定義一個具體類型並將其註冊到SM時,null仍然通過。所以看起來你的代碼並沒有定義一個默認參數,而是這個參數的強制值。如果我刪除你的代碼,則使用具體類型。 – 2010-10-06 21:33:30
@Nicolas在配置中只應該指定一個具體的實現。否則 - 你的設計很可能是錯誤的。 – 2010-10-06 21:35:55
@Nicolas也許你可以在這裏發佈需要'IMyInterface'的類嗎?構造函數和使用'IMyInterface'的部分。 – 2010-10-06 21:37:37