繁体   English   中英

C#反射-泛型类中的委托

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM