SubGeneric<T>
наследует Generic<T>
, а не Generic<>
Если бы он унаследовал Generic<>
, он не передал бы достаточно информации.
Рассмотрим разницу между
class Wierd<T1, T2> : Generic<T1> { }
и
class Wierd<T1, T2> : Generic<T2> { }
или даже
class Wierd<T1, T2> : Generic<Wierd<T2, T1>> { }
BaseType
включает конкретную параметризацию базового типа.
typeof(SubGeneric<>).BaseType.GetGenericArguments()
вернет массив, содержащий параметр общего типа SubGeneric<>
(<T>
).
typeof(SubGeneric<>).BaseType.GetGenericTypeDefinition() == typeof(Generic<>);
должно быть правдой.