12.2. Listing Exported Types
Problem
You need to obtain all the exported types of an assembly. This information allows you to see what types are usable from outside of this assembly.
Solution
Use
Assembly.GetExportedTypes to obtain the exported
types of an assembly:
using System;
using System.Reflection;
public static void ListExportedTypes(string path)
{
// load the assembly
Assembly asm = Assembly.LoadFrom(path);
Console.WriteLine("Assembly: {0} imports:",path);
// get the exported types
Type[] types = asm.GetExportedTypes( );
foreach (Type t in types)
{
Console.WriteLine ("\tExported Type: {0}",t.FullName);
}
}The previous example will display all exported, or public, types:
Assembly: C:\C#Cookbook\CSharpRecipes.exe imports:
Exported Type: CSharpRecipes.ClassAndStructs
Exported Type: CSharpRecipes.Line
Exported Type: CSharpRecipes.Square
Exported Type: CSharpRecipes.CompareHeight
Exported Type: CSharpRecipes.Foo
Exported Type: CSharpRecipes.ObjStateDiscussion
Obtaining the exported types in an assembly is useful when
determining the public interface to that assembly. This ability can
greatly aid in learning to use a new assembly or can aid the
developer of that assembly in determining all access points to their
assembly and seeing whether they are adequately secure from malicious
code. To get these exported types, we use the
GetExportedTypes method on the
System.Reflection.Assembly type. The exported types consist of all of the types that are publicly accessible from outside of ...