通过字符串比较检查动态对象类型

如果是某种类型,检查基础对象的最佳方法是什么,myObject可以具有“n”级别的层次结构,我想与字符串进行比较,因为myObject是动态的,我没有对车辆的汇编访问权限

a)汽车:车辆
b)BiCycle:TwoWheeler:Vehicle
c)卡车:拖车:FourWheeler:车辆

dynamic myObject = someObject; if(myObject is Vehicle) // Works if(myObject is "Vehicle") //How to ? 

你可以使用IsAssginableFrom

 System.Type.GetType(typeNameAsString).IsAssignableFrom(myObject.GetType()) 

测试是否可以将myObject分配给由typeNameAsString中保存的名称(字符串)标识的类型的存储位置。

这仅适用于实际加载的类型,您应该使用完全限定名称。

写了一点递归方法来解决它:

  private bool IsVehicle(Type type) { if (type.BaseType != null) if (type.BaseType.FullName == "Vehicle") return true; else return IsVehicle(type.BaseType); return false; }