这是我在这里的第一个问题,所以我希望我能够很好地表达出来,并希望它不会太令人头疼.
我有以下类SubSim扩展了Sim,它扩展了MainSim.在一个完全独立的类(和库)中,我需要检查传递的对象是否是一种MainSim.所以要做以下检查;
Type t = GetType(sim); //in this case, sim = SubSim if (t != null) { return t.BaseType == typeof(MainSim); }
显然t.BaseType将返回Sim,因为Type.BaseType获取当前Type直接继承的类型.
除了必须执行t.BaseType.BaseType以获取MainSub之外,还有其他方法可以使用.NET库获取正确的类型吗?或者是否有可以重新定义以返回主类的覆盖?
先感谢您
有4种相关的标准方式:
sim is MainSim; (sim as MainSim) != null; sim.GetType().IsSubclassOf(typeof(MainSim)); typeof(MainSim).IsAssignableFrom(sim.GetType());
您还可以创建递归方法:
bool IsMainSimType(Type t) { if (t == typeof(MainSim)) return true; if (t == typeof(object) ) return false; return IsMainSimType(t.BaseType); }
if (sim is MainSim)
是你所需要的全部."是"查找继承树.