Как получить свойства из родительского класса
Я хочу использовать 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; }
доступ к нему.