Table of Contents


Reflection objects are used for obtaining type information at runtime. This class is in the System.Reflection namespace.

var i=20;
Type type = i.GetType();

//type = System.Int32

Another example below shows how to access a private function from a different class. Let's say we have a class named ReflectionExample with private functions named FunctionA() and FunctionB().

public class ReflectionExample {
    private uint FunctionA() => 0x1234;

    private uint FunctionB(uint numPlus) => 0x1234 + numPlus;

Reflection provides a way to access these two functions even though they are declared as private.

var r = new ReflectionExample();

var type = r.GetType();

var methodA = type.GetMethod("FunctionA", BindingFlags.NonPublic | BindingFlags.Instance);

var valueA = methodA.Invoke(r, null);

var methodB= type.GetMethod("FunctionB", BindingFlags.NonPublic | BindingFlags.Instance);

var valueB = methodB.Invoke(r, new object[] { (uint)1 });

Debug.WriteLine("methodA : " + valueA);
Debug.WriteLine("methodB : " + valueB);

The output will be:

methodA : 4660
methodB : 4661