1
// case1
public class A<T> {
public delegate bool Compare(T a, T b);
}
// case2
public class A {
public delegate bool Compare<T>(T a, T b);
}
Test(typeof(A<>.Compare));
Test(typeof(A.Compare<>));
void Test(Type type)
{
// #1
}
我的问题:C#反思 - 代表泛型类
如何在位置#1编写代码来告诉类型是情形1或情形2?
似乎有
typeof(A<>.Compare).GetGenericArguments()[0]
和
typeof(A.Compare<>).GetGenericArguments()[0]
由于没有什么区别!
-------------编辑----------------
我想是要我说出类型的T-来从。 T是在A中定义还是在Compare中定义?
可能还有其他更复杂的情况,例如
public class B<T> {
public delegate bool Compare<X>(X a, T b);
}
在这种情况下,我想知道:X是比较确定,而T是在B.
你就不能做到'型== typeof运算(A <>比较。)'?如果它是错误的,那就是另一个(取决于它需要具体的具体情况)。 –
谢谢@LukeBriggs不,它需要100%具体。其实我需要知道T从哪里来。 – qiucw
100%具体是什么意思?你的意思是你想知道类型参数'T'是在类还是方法上定义的?如果是这样的话,如果你现在更新你的问题来清楚地说明问题,这听起来不像是你要求的那样。 – Adrian