Reflection is

· It is a collection of classes which allow u to query assembly (class/object) metadata at runtime.

· Using reflection we can also create new types and their instances at runtime and invoke methods on these new instances.

· At runtime, the Reflection mechanism uses the PE file to read information about the assembly.

· We can dynamically invoke methods using System.Type.Invokemember

· We can dynamically create types at runtime using System.Reflection.Emit.TypeBuilder

· With reflection we can do the below

Ø we can dynamically create an instance of a type

Ø bind the type to an existing object

Ø get the type from an existing object

Ø invoke its methods or access its fields and properties