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

时间:2010-02-23 14:42:39

标签: c# .net

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

3 个答案:

答案 0 :(得分:18)

给定System.Reflection.Assembly的实例a,您可以使用以下命令获取程序集中的所有类型:

var allTypes = a.GetTypes();

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

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

var publicTypes = a.GetExportedTypes();

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

获取程序集
var a = Assembly.GetExecutingAssembly();

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

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

答案 1 :(得分:3)

查看Assembly.GetTypes方法。

答案 2 :(得分:2)

是的,您使用Assembly.GetTypes方法。