Я являюсь абсолютным новичком при отражении на С#. Я хочу использовать рефлексию для доступа ко всем частным полям класса, включая те, которые унаследованы.
Мне удалось получить доступ ко всем закрытым полям, за исключением тех, которые унаследованы, а также все общедоступные и защищенные унаследованные поля. Однако я не смог получить доступ к закрытым, унаследованным полям. Следующий пример иллюстрирует:
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.
Возможно ли это сделать? Очевидным решением было бы преобразовать частные, унаследованные поля в защищенные поля. Это, однако, сейчас не в моих силах.