"Classes Elsewhere" - classes in auxiliary modules.
Manifests include declarations for all the classes in an
assembly, regardless of which module they are in.
The ".class extern" construct describes so-called exported types --
these are public classes defined in the auxiliary modules of this assembly,
i.e. modules other than the manifest-carrying module.
For example, if you have a two-module
assembly (A.DLL and B.DLL), and the manifest resides in the A.DLL,
then in the manifest all the public classes declared in B.DLL should
be defined as exported types, i.e., as ".class extern". The public classes
defined in A.DLL should not be defined as ".class extern" -- they are
already available in the manifest-carrying module. The union of all
public classes defined in the manifest-carrying module and all
exported types defined there is the set of all classes exposed by
this assembly. Thus, by analysing the metadata of the manifest-carrying
module of an assembly, you can identify all the classes exposed by
this assembly, and where to find them.
Nested classes found in external modules should also be located in
this table, suitably nested inside another "ILExportedTypeOrForwarder"
definition.
these are only found in the "Nested" field of ILExportedTypeOrForwarder objects