Assembly.GetAssemblyByName() is probably the ticket to look for an assembly other than yours. It will look in your application build bindings, then in the current application directory, and then in the GAC. You can also get the Assembly class specified by the object instance or statically referenced type by calling GetType().Assembly .
From this Assembly class, you can iterate over the types contained in it as type objects using GetExportedTypes() . This will only result in public types; the ones you could get if you statically referenced the assembly. You can filter them for anything you can analyze analytically; name, parent types, member names, attributes decorating a class or any member, etc.
Keiths
source share