这是我在这里的第一个问题,所以我希望我能很好地阐明它,并希望它不会太让人 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);
 }

10-08 02:25