Как получить доступ к private полю класса из вне

Иногда нужно получить доступ к private полям класса, а у вас нет возможности модифицировать класс.
Это можно сделать так:

static void Main(string[] args)
{
    PrivateClass myPrivateClass = new PrivateClass();
 
    // input from ToString() at the beginning to see the content
    Console.WriteLine(myPrivateClass);
 
    FieldInfo fi = typeof(PrivateClass).GetField("_privateText", BindingFlags.NonPublic | BindingFlags.Instance);
    String valueFromPrivateField = fi.GetValue(myPrivateClass).ToString();
    Console.WriteLine("And this was read with reflection: {0}", valueFromPrivateField);
}
static void Main(string[] args)
{
    PrivateClass myPrivateClass = new PrivateClass();
 
    // input from ToString() at the beginning
    Console.WriteLine(myPrivateClass);
 
    FieldInfo fi = typeof(PrivateClass).GetField("_privateText", BindingFlags.NonPublic | BindingFlags.Instance);
    fi.SetValue(myPrivateClass, "but I''m going to change you!");
    Console.WriteLine(myPrivateClass);
}



ссылка: http://nubo-corp.com/patrick-lamber/2010/07/how-do-i-access-private-methods-properties-and-member-variable-not-controlled-by-me-in-c/

Add comment