Reflection is a C# language feature that lets you create custom attributes and access them in your program's metadata. It can be used to create an instance of a type, bind the type to an existing object, or get the type from anexisting object and invoke its methods or access its fields and properties. Using your custom attributes can open you to a new world of how can you design your applications.