Check if a class is derived from a generic class

c#, generics, reflection

Solution

Try this code

static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) {
    while (toCheck != null && toCheck != typeof(object)) {
        var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
        if (generic == cur) {
            return true;
        }
        toCheck = toCheck.BaseType;
    }
    return false;
}

Problem

I have a generic class in my project with derived classes. ``` public class GenericClass<T> : GenericInterface<T> { } public class Test : GenericClass<SomeType> { } ``` Is there any way to find out if a `Type` object is derived from `GenericClass`? ``` t.IsSubclassOf(typeof(GenericClass<>)) ``` does not work.

Original source