gpt4 book ai didi

c# - 检查实例是否继承自 C# 中类的泛型或非泛型版本

转载 作者:行者123 更新时间:2023-11-30 14:25:37 25 4
gpt4 key购买 nike

所以我有这样的继承链:

class a : {}
class a<T> : {}
class b: a<int> {}
class c: a {}

我需要检查实例(比如说 var inst = new b() )是否继承自 a<>或来自 a仅。

然而,没有任何标准IsAssignableFrom , IsSubclassOf , IsInstanceOfType , is不适合。

执行此操作的正确方法是什么?

UPD1:继承链可能比 1 层更深

最佳答案

类 b 的实例不是从 a<T> 派生的, 但来自 a<int> ,两者是不同的类型。

var type = inst.GetType();
var result = false;

while (type != typeof(object))
{
type = type.BaseType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(a<>))
{
result = true;
break;
}
}

//check result

关于c# - 检查实例是否继承自 C# 中类的泛型或非泛型版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653525/

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