获取项目中的所有类名称

时间:2011-10-27 06:58:05

标签: c# reflection c#-4.0

  

可能重复:
  C#: List All Classes in Assembly

如何使用反射获取特定项目中的所有类名?


编辑1)

是否可以区分程序员定义的类和内置类?

3 个答案:

答案 0 :(得分:5)

您可以使用Type[] types = Assembly.GetExecutingAssembly().GetTypes()获取包含此行代码的程序集中的所有类型; Type类具有Name属性。

答案 1 :(得分:2)

前两张海报是正确的。但是,如果您需要所有引用程序集及其类型的列表,则可以执行以下操作:

var referencedAssemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
var referencedTypes = referencedAssemblies.SelectMany(x => Assembly.Load(x.FullName).GetTypes());

这将提供核心库,第三方等所有类型的列表,这些类型被引用并且使用,如果您没有使用程序集但是引用它将不会列出它类型。

它不是很有用,因为它列出了来自System和System.Core等的数千种类型,但我不完全确定你想要实现的目标,所以它可能是一个开始。

答案 2 :(得分:0)

使用Assembly.GetTypes方法