2
Reply

What is reflection?

Prabhu Raja

Prabhu Raja

13y
8.7k
0
Reply

    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).

    All .NET compilers produce metadata about the types defined in the modules they produce. This metadata is packaged along with the module (modules in turn are packaged together in assemblies), and can be accessed by a mechanism called reflection. The System.Reflection namespace contains classes that can be used to interrogate the types for a module/assembly.

    Using reflection to access .NET metadata is very similar to using
    ITypeLib/ITypeInfo to access type library data in COM, and it is used for similar purposes - e.g. determining data type sizes for marshaling data across context/process/machine boundaries.

    Reflection can also be used to dynamically invoke methods (see
    System.Type.InvokeMember), or even create types dynamically at run-time (see System.Reflection.Emit.TypeBuilder).