如何获得装配中的所有底部类型?

时间:2009-02-10 19:48:27

标签: c# .net reflection

这是this one

的姊妹问题

如果我有

的实例
System.Reflection.Assembly

我有以下型号:

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

如何枚举程序集的类型以获取对Employee,Freshman和StudentList的引用?

我希望能够枚举任何给定程序集的所有底部类型,如上例所示。

感谢您的时间:)

1 个答案:

答案 0 :(得分:7)

所以你想找到程序集中没有其他类型派生的所有类型,对吗?

(为了便于阅读而重新考虑。)

var allTypes = assembly.GetTypes();
var baseTypes = allTypes.Select(type => type.BaseType);
var bottomTypes = allTypes.Except(baseTypes);

(如果你想要一个.NET 2.0版本,请告诉我。它会有点痛苦。)