// 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
}
我的问题:
如何在位置#1中编写代码来告诉类型是case1还是case2?
似乎没有什么区别
typeof(A<>.Compare).GetGenericArguments()[0]
和
typeof(A.Compare<>).GetGenericArguments()[0]
谢谢!
------------- 编辑 ----------------
我想知道类型T的来源。T是定义在A中还是定义在比较本身中?
可能还有其他更复杂的情况,例如
public class B<T> {
public delegate bool Compare<X>(X a, T b);
}
在这种情况下,我想知道:X是在比较上定义的,T是在b上定义的。
检查声明类型:
void Test(Type type)
{
if (type.DeclaringType.IsGenericType)
Console.WriteLine("1");
else
Console.WriteLine("2");
}