
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Displaying the Inheritance Hierarchy for a Type
|
767
Calling Type.GetType to retrieve a type defined in a dynamic assembly
(one that is created using the types defined in the
System.Reflection.
Emit
namespace) returns a null if that assembly has not already been
persisted to disk. Typically you would use the static
Assembly.GetType
method on the dynamic assembly’s Assembly object.
See Also
See Recipe 13.10; see the “Assembly Class” and “BindingFlags Enumeration” topics
in the MSDN documentation.
13.7 Displaying the Inheritance Hierarchy for a Type
Problem
You need to determine all of the base types that make up a specific type. Essentially,
you need to determine the inheritance hierarchy of a type starting with the base (least
derived) type and ending with the specified (most derived) type.
Solution
Use the DisplayInheritanceChain method to display the entire inheritance hierarchy
for all types existing in an assembly specified by the
asmPath parameter. Its source
code is:
public static void DisplayInheritanceChain(string asmPath)
{
Assembly asm = Assembly.LoadFrom(asmPath);
foreach(Type type in asm.GetTypes( ))
{
DisplayInheritanceChain(type);
}
}
public static void DisplayInheritanceChain(Type type)
{
// Recurse over all base types.
Console.WriteLine ("Derived Type: " + type.FullName);
Console.WriteLine ...