Как получить доступ к private полю используя рефлексию?
Помогите разобраться, есть следующий код
public class MyFieldClass
{
private Dictionary<int, string> test = new Dictionary<int, string>
{
[1] = "Один",
[2] = "Два",
[3] = "Три"
};
}
public class MyFieldInfoClass
{
public static void Main()
{
Type myType = typeof(MyFieldClass);
FieldInfo myFieldInfo1 = myType.GetField("test", BindingFlags.NonPublic | BindingFlags.Instance);
var test2 = myFieldInfo1.GetValue(null);
}
}
как можно получить длину private словаря test в классе MyFieldClass?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
К полю объекта можно получить доступ только через экземпляр этого объекта.
var obj = new MyFieldClass();
Type myType = typeof(MyFieldClass);
FieldInfo myFieldInfo1 = myType.GetField("test", BindingFlags.NonPublic | BindingFlags.Instance);
var test2 = myFieldInfo1.GetValue(obj);
null покатит только для static поля, конечно если убрать при этом BindingFlags.Instance.