Как получить свойства из родительского класса

Я хочу использовать GetProperties чтобы получить свойства из родительского класса через ребенка и, несмотря на исследование этого, не удалось.

Я попробовал следующее без какого-либо результата:

PropertyInfo[] fields = t.GetProperties();
PropertyInfo[] fields1 = t.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy);
PropertyInfo[] propNames = t.BaseType.GetProperties( BindingFlags.Public | BindingFlags.Instance);

Просто получил свойства дочернего класса, но не получил свойства родительского класса.

Классы

public class A: B
{
    public string a1 { get; set; }

    public string a2 { get; set; }

    public string a3 { get; set; }

    public string a4 { get; set; }
}

public class B
{
    public string b1;
}

Используя этот код, я получаю Aсвойства, но не собственность в B,

Этот код работает? Нужно ли что-то настраивать в каком-то месте?

1 ответ

Решение

В вашей декларации

public class B
{
    public string b1;
}

b1 это поле, а не свойство. Вы должны либо

  • использование GetFields():

    FieldInfo[] fields = t.GetFields();
    

    который получит поля (как и ожидалось) - обратите внимание, что в документации сказано, что

    Как правило, вы должны использовать поля только для переменных, которые имеют частную или защищенную доступность.

  • Делать b1 свойство, например, путем добавления { get; set; } доступ к нему.

Другие вопросы по тегам