如何使用反射获取当前项目中的所有类?

12

如何利用反射列出当前项目(程序集)中的所有类?谢谢。

3个回答

20

如果有一个名为a的System.Reflection.Assembly实例,您可以使用以下代码获取程序集中的所有类型:

var allTypes = a.GetTypes();

这将给你所有类型,包括公共、内部和私有。

如果你只想要公共类型,可以使用:

var publicTypes = a.GetExportedTypes();

如果您正在汇编程序内运行此代码,则可以使用以下方式获取程序集:

var a = Assembly.GetExecutingAssembly();

GetTypes和GetExportedTypes将为您提供所有类型(结构体,类,枚举,接口等),因此如果您只想要类,您需要进行过滤。

var classes = a.GetExportedTypes().Where(t => t.IsClass);

3

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接