这是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的引用?
我希望能够枚举任何给定程序集的所有底部类型,如上例所示。
感谢您的时间:)
答案 0 :(得分:7)
所以你想找到程序集中没有其他类型派生的所有类型,对吗?
(为了便于阅读而重新考虑。)
var allTypes = assembly.GetTypes();
var baseTypes = allTypes.Select(type => type.BaseType);
var bottomTypes = allTypes.Except(baseTypes);
(如果你想要一个.NET 2.0版本,请告诉我。它会有点痛苦。)