Introduction
Reflection lets a program look at and use information about itself while it runs. This helps when you want to work with code parts you don't know about until the program is running.
You want to find out what methods or properties a class has without opening its code.
You need to create objects or call methods dynamically based on user input or configuration.
You want to build tools that inspect or modify other programs, like debuggers or serializers.
You want to load and use plugins or modules that are added after your program is built.