这是我在这里的第一个问题,所以我希望我能很好地阐明它,并希望它不会太让人 NumPy 。
我有下面的SubSim类,它扩展了Sim,它扩展了MainSim。在一个完全独立的类(以及库)中,我需要检查所传递的对象是否是MainSim的类型。因此,要进行以下检查:
类型t = GetType(sim);
//在这种情况下,sim = SubSim
如果(t!= null)
{
返回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);
}