假设我有一个对象,那么我怎么知道该对象是否派生自特定的泛型类。例如:

public class GenericClass<T>
{
}

public bool IsDeriveFrom(object o)
{
    return o.GetType().IsSubclassOf(typeof(GenericClass)); //will throw exception here
}

请注意,上面的代码将引发异常。无法直接检索通用类的类型,因为没有提供类型参数的通用类没有类型。

最佳答案

您应该执行以下操作:

    public class GenericClass<T>
    {
    }

    public class GenericClassInherited<T> : GenericClass<T>
    {
    }


    public static bool IsDeriveFrom(object o)
    {
        return o.GetType().BaseType.GetGenericTypeDefinition() == typeof(GenericClass<>);
    }

例子:
    static void Main(string[] args)
    {
        var generic = new GenericClassInherited<int>();
        var isTrue = IsDeriveFrom(generic);
    }

关于c# - 我怎么知道对象是否派生自特定的泛型类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4561380/

10-11 18:28