What Does Reflection Mean?
Reflection is the process of accessing information about loaded assemblies and the types defined therein to create, invoke and access type instances at run time programmatically.
Reflection makes it possible to view the assembly information of an object such as events, properties, methods and fields. It forms a mechanism by which objects can interrogate each other and discover information at run time, which includes more than what is known through publicly exposed interfaces. Reflection helps to define modules and new types invoked during run time. Reflection is used in applications such as type browsers (for selecting and viewing the information about types), compilers (to construct symbol tables), and remoting and serializing applications (for accessing data and its persistence).
Techopedia Explains Reflection
Reflection provides a late binding facility at run time to create an instance of a given type, which is not known during compile time.
Reflection is similar to the process of fetching run time type information implemented in languages such as C++, Delphi, Java, etc. In case of .NET, type information stored as metadata in compiled assembly is fetched using .NET classes programmatically.
Reflection can be suitable for applications where third-party plug-ins are used, but it is not suitable for applications such as an ASP.NET website, where good throughput and response time is important. Reflection has its own disadvantages. These include performance overhead, security restrictions, code complexity and access to hidden members.