1
當您需要調用特定的構造函數時,Unity的InjectionConstructor
可以很好地工作,因爲您有特定的依賴關係(例如,任何外部依賴項,命名註冊或未命名註冊的混合),但需要指定所有參數。有沒有辦法暗示Unity應該使用哪個構造函數?
是否有某種方式來增強團結的「查找和使用構造數最多的參數」和「查找和使用最大量的參數的構造函數,也可能某處接受IX
實例簽名」?
當您需要調用特定的構造函數時,Unity的InjectionConstructor
可以很好地工作,因爲您有特定的依賴關係(例如,任何外部依賴項,命名註冊或未命名註冊的混合),但需要指定所有參數。有沒有辦法暗示Unity應該使用哪個構造函數?
是否有某種方式來增強團結的「查找和使用構造數最多的參數」和「查找和使用最大量的參數的構造函數,也可能某處接受IX
實例簽名」?
馬克的評論提供了答案的基礎。也就是說,中AddPolicies
InjectionConstructor
構造函數的構造函數。有一些限制(例如,如果值爲空,或者它們與構造函數中的父類型匹配),並且對於其餘(隱式)類型,則使用容器來解析它們。我不是說這是好的。我最終在其他地方使用了RegisterInstance
,混合參數需求消失了。但對於那些可能需要它的人來說,這是一個解決方案。
我不知道,你可以做這樣的直接什麼,但也許你可以從InjectionConstructor派生並覆蓋其'AddPolicies'方法? –
如果可以,請阻止您的服務類具有多個公共構造函數的設計。這使得設計更加清潔,並且作爲更多DI友好的副作用。 – Steven
@Steven - 完全同意。在這種情況下,我其實只有一個。我猜*補充*是錯誤的詞。或者說我需要的東西之間* *明確('InjectionConstructor')和* *隱(不使用'InjectionConstructor'在所有)更有意義。 – Kit