Всем привет! Начал изучать рефлексию в шарпе, начитался мол крутая штука, позволяет обходить инкапсуляцию, считывать приватные и поля и тд. Одной из главных целей рефлексии, я слышал, является получение типа в процессе выполнения программы. В общем - чудеса. Остался лишь один вопрос “КАК ЭТО РАБОТАЕТ”. Например создал я класс
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[] { });
}
}