📜  c# 获取一个类的所有继承类 - C# (1)

📅  最后修改于: 2023-12-03 14:39:47.706000             🧑  作者: Mango

C#获取一个类的所有继承类

在C#中,可以通过反射机制获取一个类的所有继承类。接下来我们就来详细讲解如何实现这一功能。

获取程序集中所有类型

首先,我们需要获取当前程序集中所有的类型。我们可以通过 Assembly 类的 GetExecutingAssembly 方法获取当前程序集,再通过 GetTypes 方法获取程序集中所有的类型。代码如下:

var assembly = Assembly.GetExecutingAssembly();
var types = assembly.GetTypes();
查询继承关系

接下来,我们需要查询每一个类型的继承关系,判断其是否是某个类的子类。我们可以通过 Type 类的 IsSubclassOf 方法判断一个类型是否是另一个类型的子类。代码如下:

var baseType = typeof(SomeClass);
foreach (var type in types)
{
    if (type.IsSubclassOf(baseType))
    {
        // 处理类型
    }
}
输出结果

最后,我们需要将所有继承类的信息输出出来。我们可以使用 StringBuilder 类来拼接字符串,最后再将其打印出来。代码如下:

var assembly = Assembly.GetExecutingAssembly();
var types = assembly.GetTypes();
var resultList = new List<string>();
var baseType = typeof(SomeClass);
foreach (var type in types)
{
    if (type.IsSubclassOf(baseType))
    {
        resultList.Add(type.FullName);
    }
}
var result = string.Join("\n", resultList);
Console.WriteLine(result);

以上代码会输出所有 SomeClass 的继承类的完全限定名。

以上就是获取一个类的所有继承类的方法。