12

How can I list all the classes in my current project(assembly?) using reflection? thanks.

ryudice
  • 36,476
  • 32
  • 115
  • 163

3 Answers3

20

Given an instance a of System.Reflection.Assembly, you can get all types in the assembly using:

var allTypes = a.GetTypes();

This will give you all types, public, internal and private.

If you want only the public types, you can use:

var publicTypes = a.GetExportedTypes();

If you are running this code from within the Assembly itself, you can get the assembly using

var a = Assembly.GetExecutingAssembly();

GetTypes and GetExportedTypes will give you all types (structs, classes, enums, interfaces etc.) so if you want only classes you will have to filter

var classes = a.GetExportedTypes().Where(t => t.IsClass);
Mark Seemann
  • 225,310
  • 48
  • 427
  • 736
3

Have a look at the Assembly.GetTypes method.

Gregory Pakosz
  • 69,011
  • 20
  • 139
  • 164
2

Yes, you use the Assembly.GetTypes method.

Nick
  • 5,875
  • 1
  • 27
  • 38