Reflection - The process of getting the metadata from modules/assemblies. When .NET code is compiled, metadata about the types defined in the modules is produced. These modules are in turn packaged as assemblied. The process of accessing this metadata in called Reflection. The namespace System.Reflection contains classes that can be used for interrogating the types for a module/assembly. We use reflection for examining data type sizes for marshalling across process & machine boundaries. Reflection is also used for: 1) To dynamically invoke methods (using System.Type.InvokeMember) 2) To dynamically create types at runtime (using System.Reflection.Emit.TypeBuilder).