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
Post a Comment