Я абсолютный новичок в отражении в C #. Я хочу использовать отражение для доступа ко всем закрытым полям в классе, включая те, которые наследуются.
Мне удалось получить доступ ко всем закрытым полям, кроме тех, которые унаследованы, а также ко всем открытым и защищенным наследуемым полям. Однако я не смог получить доступ к закрытым, унаследованным полям. Следующий пример иллюстрирует:
class A
{
private string a;
public string c;
protected string d;
}
class B : A
{
private string b;
}
class test
{
public static void Main(string[] Args)
{
B b = new B();
Type t;
t = b.GetType();
FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Instance);
foreach(FieldInfo fi in fields){
Console.WriteLine(fi.Name);
}
Console.ReadLine();
}
}
Не удается найти поле B.a.
Возможно ли это сделать? Очевидным решением будет преобразование частных, унаследованных полей в защищенные поля. Это, однако, в данный момент вне моего контроля.