reflection - C# Sorting Type hierarchy -


i have multiple types stored in list, , need have them sorted concrete type general ones, example:

vehicle   car   bike  person   manager   programmer 

so makes list with: vehicle, car, bike, person, manager, programmer types. need ordered list more concrete type before more general type like: car, bike, vehicle, manager, programmer, person. there simple/elegant way achieve this, besides gymnastics type.isassignablefrom ?

one simple way figure every child class must have more classes in hierachy parents do, can order how many classes in each type's hierarchy:

var types = new[] {     typeof(vehicle),     typeof(car),     typeof(bike),     typeof(person),     typeof(manager),     typeof(programmer) }; var ordered = types.orderbydescending(t => gethierarchy(t).count()); 

using this:

private static ienumerable<type> gethierarchy(type type) {     while (type != null) {         yield return type;         type = type.basetype;     } }  class vehicle {}   class car : vehicle{}   class bike : vehicle{}  class person {}   class manager : person{}   class programmer : person{} 

Comments