Как получить свойства из родительского класса - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу использовать 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 Ответ

0 голосов
/ 27 февраля 2019

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

public class B
{
    public string b1;
}

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

  • Использовать GetFields():

    FieldInfo[] fields = t.GetFields();
    

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

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

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

...