~page 140 of charles petzold’s Programming windows with C# has a description and example of reflection
he says that
REFLECTION is the process where
the DLL isn’t just a bunch of code. It exists with binary metadata that describes in detail the classes implemented in the file and all the fields, properties, methods and events in these classes. In fact, the C# compiler uses this information to compile programs (that’s why you ned to set the Reference files), and the reference documentation of the .NET framework is derived from this metadata.
So it makes sense that a program might be able to access this metadat at runtime, find out about the .NET classes dynamically, and even execute some methods and properties in them. This process is called reflection, and its a concept borrowed form Java.