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

ryu*_*ice 12 .net c#

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

Mar*_*ann 18

给定aSystem.Reflection.Assembly 的实例,您可以使用以下方法获取程序集中的所有类型:

var allTypes = a.GetTypes();
Run Code Online (Sandbox Code Playgroud)

这将为您提供所有类型,公共,内部和私人.

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

var publicTypes = a.GetExportedTypes();
Run Code Online (Sandbox Code Playgroud)

如果从Assembly本身运行此代码,则可以使用该程序集

var a = Assembly.GetExecutingAssembly();
Run Code Online (Sandbox Code Playgroud)

GetTypes和GetExportedTypes将为您提供所有类型(结构,类,枚举,接口等),因此如果您只想要类,则必须过滤

var classes = a.GetExportedTypes().Where(t => t.IsClass);
Run Code Online (Sandbox Code Playgroud)