3

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

a) 汽车:车辆
b) 自行车:TwoWheeler:车辆
c) 卡车:拖车:FourWheeler:车辆

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

2 回答 2

2

你可以使用 IsAssginableFrom

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

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

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

于 2012-10-20T18:14:23.340 回答
0

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

 private bool IsVehicle(Type type)
        {
            if (type.BaseType != null)
                if (type.BaseType.FullName == "Vehicle")
                    return true;
                else
                    return IsVehicle(type.BaseType);
            return false;
        }
于 2012-10-20T19:23:23.090 回答