Как записать значение в приватное поле через рефлексию?

Здравствуйте. В процессе изучения рефлексии задался вопросом, возможно ли записать значение в приватное поле. Логика подсказывает что да, возможно, но как это реализовать - одному богу известно. Итак, прикинем что у нас есть класс с приватным полем:

 class MyClass
{
public string Hello = "Hello";
private string secondWord = " World";

private void Show()
{
Console.WriteLine(Hello secondWord);
}
}

Как заменить слово World на какое-то имя например?

Здравствуй. Логика не обманула, с помощью рефлексии можно также менять значения приватных полей (да-да, и не говори, магия). Представляю твоему вниманию код с реализацией вопроса:

class Program

{

static void Main(string[] args)

{

var instance = new MyClass();

Type type;

FieldInfo mystring = type.GetField("secondWord", BindingFlags.Instance | BindingFlags.NonPublic);

mystring.SetValue(instance , " Dude");

// Check

/*

MethodInfo Show = type.GetMethod("Show", BindingFlags.Instance | BindingFlags.NonPublic;

Show.Invoke(instance , new object[] { });

*/

Console.ReadKey();

}

}

Изучай. На канале ITVDN Александр Шевчук очень доступно преподнёс тему рефлексии. Я учил её именно по видео, усвоилось очень хорошо. Советую пересмотреть на досуге, если хочешь понимать шарп на уровне выше чем уровень университетов)

https://itvdn.com/ru/video/csharp-for-professional-renewed