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