我有一個接口:我可以返回具有特定泛型類型的所有通用對象嗎?
public interface InterfaceA<S,T>{}
,我想加載實現此接口的所有類的一個實例,無論通用參數S
和T
的。所以我有一個方法來做到這一點。方法簽名是目前:
public IEnumerable<object> GetInstancesOfImplementingTypes (Type targetType)
通過加載的程序集,以反映查找具有一個GetGenericTypeDefinition
等於targetType
的GetGenericTypeDefinition
類型。我使用的類型(而不是在方法一件T PARAM),這樣我就不必指定通用參數,即我可以調用它像這樣:
var foundinstances = o.GetInstancesOfImplementingTypes(typeof(InterfaceA<,>))
但我似乎有將找到的類型的實例作爲對象返回。是否有某種方式可以返回比只是對象更多的約束類型,因爲我知道所有的實例都會執行一些InterfaceA
,我只是不知道S
和T
會是什麼。
這將必須是反射觀察查詢爲
InterfaceA
情況下的結果,而不是仿製藥 – 2011-06-07 15:08:27@Marc吧?請用英文? – 2011-06-07 15:37:13
在運行時,您可以詢問對象具有哪些接口,然後針對每個請求:是通用的;如果是這樣,什麼是開放的泛型類型 - 是這樣嗎?很多工作,相對較慢。如果你想要一個例子,我可以添加它,但可以說最好避免他的場景。 – 2011-06-07 16:09:36