public class BaseGenericType<T>
{
}
public class SubGenericType<T>: BaseGenericType<List<T>>
{
}
I have two generic types above, which one inherits from another but is still generic. The strange thing I can't figure out is that typeof(SubGenericType<>).IsSubclassOf(typeof(BaseGenericType<>))
returns false. And typeof(SubGenericType<>).IsSubclassOf(typeof(BaseGenericType<List<>>))
still returns false. I've tried GetGenericTypeDefinition()
and MakeGenericType()
and GetGenericArguments()
to check the inheritance, still not working. But typeof(SubGenericType<int>).IsSubclassOf(typeof(BaseGenericType<List<int>>))
returns true.
What I want is to get all classes by reflection then grab the specific class which inherits from a generic type passed in.
e.g.
(1)
List<int>
-->(2)get generic type definition ==>
List<T>
-->(3)make generic ==>
BaseGenericType<List<T>>
-->(4)find subclass ==>
SubGenericType<T>
(5)make generic ==>
SubGenericType<int>
In step (4) I find nothing although I actually have that SubGenericType<T>
. Why is that?
Aucun commentaire:
Enregistrer un commentaire