给定一组不同的对象,是否有可能找到它们共享的最具体的基类?
例如,给定具有这些类层次结构的对象......
object -> Vehicle -> WheeledVehicle -> Car -> SportsCar
object -> Vehicle -> WheeledVehicle -> Bus
object -> Vehicle -> WheeledVehicle -> MotorCycle
object -> Vehicle -> WheeledVehicle -> Tricycle -> BigWheel
object -> Vehicle -> WheeledVehicle -> Tricycle -> Green Machine
(为了好玩... http://www.wired.com/autoopia/2011/03/green-machine-bike-is-a-big-wheel-for-grownups)
是否可以使用此签名编写函数...
public Type GetCommonBaseType(List<object> objects)
{
...
};
...并让它返回'WheeledVehicle'?
我的想法是以某种方式为每个对象建立继承链列表,将它们反转,使它们都以“对象”开头,然后遍历它们中的每一个,检查所有列表中的匹配项。如果任何项目不匹配,那么前面的步骤是您最深匹配的基本类型。
但是,我不确定如何建立链条,因为“基地”是内部成员。这是您可以使用反射来确定的吗?