Using reflection you can discover which types exist in an assembly at run-time as well as examine its methods, properties, events and attributes.
what is attribute, what can you use it for ?
what are the pros and cons
Attributes are metadata tags that you can apply to your code.
The CLR uses classes within the .NET Framework that are part of the System.Reflection namespace to programmatically inspect an assembly.
The ildasm utility uses reflection to display all the types and members of an assembly.
You can also view the assembly's IL.
There are other tools that use reflection on an assembly that do not ship with the Framework, such as .NET Reflector.