Почему я получаю FieldAccessException
при попытке получить доступ к защищенному полю с отражением в следующем коде?
using System;
using System.Reflection;
public class Program
{
public static void Main()
{
Foo foo = new Foo();
BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.NonPublic
| BindingFlags.Public | BindingFlags.Static;
FieldInfo fieldInfo = foo.GetType().GetField("field", bindFlags);
Object fieldValue = fieldInfo.GetValue(foo);
}
}
public class Foo
{
public Foo() {
field = 1;
}
protected int field;
}
Эта скрипка дает мне исключение: https://dotnetfiddle.net/wu5vDX, но не должен 't флаги привязки удостоверяются, что я могу получить доступ к полю?
Редактировать: По-видимому, это только результат .Net Fiddle.Это происходит только в скрипке, а не в Visual Studio, например.