我想爲IoC容器返回的應用程序的一部分定義一個外觀,在我的情況下是StructureMap。 Facade有一個構造函數,它沒有設置默認實現的參數,而另一個是我可以定義Facade管理的不同子系統對象的自定義實現。StructureMap和外牆
但是,由於StructureMap試圖使用最多參數調用構造函數的外觀實例,因此如果未註冊其他子系統的實現,它將失敗。
我的問題是:有沒有什麼辦法告訴StructureMap嘗試使用下面的構造函數,如果它不能使用主要的?或者我必須告訴StructureMap選擇哪個構造函數?
也許有點示例代碼將一些可視化的幫助。 – IAbstract 2011-06-09 13:16:07
如果可能,始終只有一個帶參數的構造函數。不要創建一個初始化類型的默認構造函數。這樣,你的類型仍然與具體的依賴關係緊密結合,這使得它很難交換。讓StructureMap完成它的工作。 – Steven 2011-06-09 13:42:30
使用帶參數的單個構造函數雖然仍然很少,但在這種情況下,大多數情況下會超出使用外觀的目的。關於添加一些示例,我不知道是否真的需要,畢竟,我的問題不需要太多的代碼。如果有一個具有多個構造函數的類,那麼StructureMap將選擇第一個具有更大數字的參數,如果參數,我想知道的是如果StructureMap在異常情況下可以以某種方式使用其他構造函數作爲回退。 – Neverbirth 2011-06-09 14:18:49