2
我有泛型類型IMyGeneric<T> where T : IBase
。獲取在Ninject中繼承通用約束的所有類型
如何獲取所有類型在ninject中繼承IMyGeneric<T>
?
我嘗試這樣做:
this.kernel.GetAll<IMyGeneric<IBase>>();
,但不工作及其返回0的結果。
我能得到所繼承IBase
一切,然後foreach
所有類型和使用this.kernel.Get(type)
但後來我不得不IEnumerable<object>
而不是IEnumerable<IMyGeneric<IMyInheritedType>>
和將無法施展,然後返回爲特定類型的如IEnumerable<IMyGeneric<IBase>>
,因爲我在演員時出錯。
轉換的'IMyGeneric'到'IMyGeneric '當接口被定義爲變量類型纔會工作:'IMyGeneric ',但即便如此,我不認爲Ninject實際上支持此功能。因此,即使您註冊了不同類型的「IMyGeneric 」列表,Ninject也可能不會爲您獲取這些類型。 –
Steven
任何其他方式來獲取所有基於約束的實現?或者創建IBaseConstraint(僅限於約束),然後通過IBase獲取所有內容?雖然我不太喜歡這個想法。 – zhuber
您可能想要更多地展示您爲我們提供的有關如何繼續操作的反饋的實際實施。 – Steven