gpt4 book ai didi

c# - 如何使用 .NET 反射查找一个类的所有直接子类

转载 作者:IT王子 更新时间:2023-10-29 04:30:20 36 4
gpt4 key购买 nike

考虑以下类层次结构:基类 A、继承自 A 的类 B 和类 C 以及继承自 B 的类 D。

public class A     {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}

我可以使用下面的代码找到 A 的所有子类,包括 D:

var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));

但我只需要找到 A 的直接子类(例如 B 和 C),并排除所有不是直接从 A 继承的类(例如 D)。知道怎么做吗?

最佳答案

对于每一种类型,检查是否

type.BaseType == typeof(A)

或者,您可以直接将其内联:

var types = assembly.GetTypes().Where(t => t.BaseType == typeof(baseType));

关于c# - 如何使用 .NET 反射查找一个类的所有直接子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16038819/

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