gpt4 book ai didi

c# - 基类型的基类型

转载 作者:可可西里 更新时间:2023-11-01 08:32:24 26 4
gpt4 key购买 nike

这是我在这里的第一个问题,所以我希望我能清楚地表达出来,希望它不会太容易让人 NumPy 。

我有以下类 SubSim,它扩展了 Sim,它扩展了 MainSim。在一个完全独立的类(以及库)中,我需要检查传递的对象是否是 MainSim 的类型。所以做了下面的检查;

Type t = GetType(sim);//in this case, sim = SubSimif (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);
}

关于c# - 基类型的基类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com