Рефлексия в C#

Всем привет! Начал изучать рефлексию в шарпе, начитался мол крутая штука, позволяет обходить инкапсуляцию, считывать приватные и поля и тд. Одной из главных целей рефлексии, я слышал, является получение типа в процессе выполнения программы. В общем - чудеса. Остался лишь один вопрос “КАК ЭТО РАБОТАЕТ”. Например создал я класс

class Class1

{

private void Show()

{

Console.WriteLine(“Hello world

Даров. Рефлексия это дар богов. Она реально творит чудеса и ломает логику, по этому с ней нужно быть очень осторожным (не даром таки инкапсюляция была придумана, да?) Считать тип проще простого. Более того, сделать это можно несколькими способами. Об этом подробнее можно узнать на курсе C# Professional , я же покажу только один на примере твоего класса:

class Program

{

static void Main(string[] args)

{

var cl = new Class1();

Type type;

type = cl.GetType(); //1st way

}

}

Привет. На первый вопрос уже ответили, так что дам ответ на второй. Вызвать приватный метод тоже возможно, правда это будет немного сложнее:

class Program

{

static void Main(string[] args)

{

var classInstance = new Class1();

Type type;

MethodInfo method = type.GetMethod("Show", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); // BindingFlags are used for detailing

method.Invoke(classInstance, new object[] { });

}

}