1. Viewing Metadata. 2.Performing type discovery. 3.Late binding to methods and properties (dynamic invocation) 4.Creating new types at runtime(Reflection EMIT)
Reflection is used for the late binding of an object in .Net. By using Reflection one can use the COM components and create the Objects of them at Runtime. It invokes the Methods Properties etc of that COM Object.
1) Load assemblies dynamically 2) Invoke methods at runtime 3) Retriving type information at runtime.
We are using reflection in Unit Testing for testing Private methods. Infact our friend Mr. Intellisence of MS.NET internally using reflection only. That is the reason we are getting only type specific methods and properties in Intellisence.