我有一個PriorityQueue,它將Func作爲構造參數。停止Ninject綁定Func <T, T, bool>自動
public PriorityQueue(ISomeOtherInjectedThing other, Func<T, T, bool> cmp_func) {...}
我束縛,這使用Ninject:
Bind(typeof (IPriorityQueue<,>)).To(typeof(PriorityQueue<,>));
我們在代碼和這一部分了bug,我們注意到Ninject似乎產生一個對象FUNC鍵,注入到我們的優先級隊列此,但我們對此沒有約束力。工廠應該拋出一個激活例外,因爲我們沒有通過所需的比較功能。它沒有,如果我調試,我發現這一點:
Ninject.dll!Ninject.KernelBase.Resolve.AnonymousMethod__c(Ninject.Planning.Bindings.IBinding binding) Line 386 + 0x5a bytes C#
我怎樣才能獲得Ninject拋出預期的異常,而不是默默地生成函數求<>注入?
我是否正確理解這一點:如果我只是停止使用工廠擴展(=不要安裝工廠擴展nupkg),問題就消失了? – Wilbert
。 (......填寫消息最小尺寸要求的空間:D) – BatteryBackupUnit
但我也認爲Factory Extensions提供了一些非常有價值的功能。所以我要麼通過特定的接口替換'Func <>',要麼通過禁用自動加載併爲Factory擴展創建一組自定義的綁定來使用擴展的「一半」,正如答案中所述。 – BatteryBackupUnit