如果是某种类型,检查基础对象的最佳方法是什么,myObject可以具有“n”级别的层次结构,我想与字符串进行比较,因为myObject是动态的,我没有对车辆的汇编访问
a)汽车:车辆
b)BiCycle:TwoWheeler:车辆
c)卡车:预告片:FourWheeler:车辆
dynamic myObject = someObject;
if(myObject is Vehicle) // Works
if(myObject is "Vehicle") //How to ?
答案 0 :(得分:2)
你可以使用IsAssginableFrom
System.Type.GetType(typeNameAsString).IsAssignableFrom(myObject.GetType())
测试是否可以将myObject分配给typeNameAsString中保存的名称(字符串)标识的类型的存储位置。
这仅适用于实际加载的类型,您应该使用完全限定名称。
答案 1 :(得分:0)
写了一个小的递归方法来解决它:
private bool IsVehicle(Type type)
{
if (type.BaseType != null)
if (type.BaseType.FullName == "Vehicle")
return true;
else
return IsVehicle(type.BaseType);
return false;
}