3
給定一個特定的接口ITarget<T>
和特定類型myType
,如果myType
執行ITarget<T>
,您將如何確定T
。 (此代碼段被從答案帶到an earlier question。)如何在字典中實現某個通用接口的所有類型?
foreach (var i in myType.GetInterfaces())
if (i.IsGenericType
&& i.GetGenericTypeDefinition() == typeof(ITarget<>))
return i.GetGenericArguments()[0] ;
然而,這僅檢查一個單類型,myType
。我將如何創建一個字典的所有這樣的類型參數,其中的關鍵是T
和值是myType
?我認爲它看起來像這樣:
var searchTarget = typeof(ITarget<>);
var dict = Assembly.GetExecutingAssembly().[???]
.Where(t => t.IsGenericType
&& t.GetGenericTypeDefinition() == searchTarget)
.[???];
空白是什麼?
備用:'AppDomain.CurrentDomain.GetAssemblies()。Selec tMany(x => x.GetTypes())。 // etc' – Will 2010-05-24 12:27:24
工作完美!非常感謝。但有一個問題:添加'!i.ContainsGenericParameters'的動機是什麼? – 2010-05-24 12:28:29
'!i.ContainsGenericParameters'不包括'C類:ITarget {...}'。 –
2010-05-24 12:33:09