[英]C# Reflection - Delegate in a generic class
// 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中定义还是在Compare自身中定义?
可能还有其他更复杂的情况,例如
public class B<T> {
public delegate bool Compare<X>(X a, T b);
}
在这种情况下,我想知道:X是在Compare上定义的,T是在B上定义的。
检查声明类型:
void Test(Type type)
{
if (type.DeclaringType.IsGenericType)
Console.WriteLine("1");
else
Console.WriteLine("2");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.