gpt4 book ai didi

c# - 如何获取程序集中的所有基本类型?

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:37 25 4
gpt4 key购买 nike

所以如果我有一个实例

System.Reflection.Assembly 

我有以下模型:

class Person {}
class Student : Person {}
class Freshman : Student {}
class Employee : Person {}
class PersonList : ArrayList {}
class StudentList : PersonList {}

如何枚举程序集的类型以仅获取对 Person 和 PersonList 类型的引用?

明确一点:我不想在此查找期间显式指定 Person 或 PersonList 类型。 Person 和 PersonList 只是在本示例的相关程序集中定义的根类型。我正在寻找一种通用方法来枚举给定程序集的所有根类型。

感谢您的宝贵时间:)

最佳答案

怎么样:

var rootTypes = from type in assembly.GetTypes()
where type.IsClass && type.BaseType == typeof(object)
select type;

?或者用非 LINQ 术语:

foreach (Type type in assembly.GetTypes())
{
if (type.IsClass && type.BaseType == typeof(object))
{
Console.WriteLine(type);
}
}

编辑:不,那不会发现 PersonList。您需要更清楚“根”的定义。您实际上是指“基类型不在同一程序集中的任何类型”吗?如果是这样:

var rootTypes = from type in assembly.GetTypes()
where type.IsClass && type.BaseType.Assembly != assembly
select type;

关于c# - 如何获取程序集中的所有基本类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/533831/

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