Why You Should Understand Reflection
At first, reflection is hard for many programmers to understand, but it is well worth the effort to learn. It makes many things possible that would otherwise be impossible. Reflection is not just a curiosity for the idle genius or a technique for implementing rare and esoteric program features. Many programming tools, such as IntelliSense and the Class View and Properties windows in Visual Studio.NET, use reflection extensively. The Common Language Runtime (CLR) and the .NET Framework also both use reflection extensively to support many important features, such as object serialization, the .NET remoting architecture, and dynamic method dispatch.
In fact, it is fair to say that virtually every .NET program will use reflection in many ways, regardless of whether the program author ever knows anything about it. Of course, much additional power is made available to programmers who know how to explicitly use reflection in their own code to implement ultracool functionality.