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

时间:2012-10-20 18:01:16

标签: c# c#-4.0 dynamic

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

a)汽车:车辆
 b)BiCycle:TwoWheeler:车辆
 c)卡车:预告片:FourWheeler:车辆

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

2 个答案:

答案 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;
        }