Reflection provides objects that encapsulate assemblies, modules and types.
With reflection you can read metadata for finding assemblies, modules and types information at runtime.
These objects also can be used to manipulate instances of loaded types.