Как мне автоматически отображать все свойства класса, который является свойством другого класса?
Я хочу напечатать все значения моего класса, аналогичные этому вопросу. Разница в том, что мой класс - это свойство другого класса. Я пробовал следующий простой код:
public class ClassA
{
public double PropA = 5;
private PropertyInfo[] _PropertyInfos = null;
public void Print()
{
if (_PropertyInfos == null)
_PropertyInfos = this.GetType().GetProperties();
foreach (var info in _PropertyInfos)
{
Console.WriteLine(info.Name + ": " + info.GetValue(this).ToString());
}
}
}
public class ClassB
{
public ClassA PropB = new ClassA();
}
class Program
{
static void Main(string[] args)
{
ClassB classB = new ClassB();
classB.PropB.Print();
}
}
По какой-то причине _PropertyInfos всегда недействителен, поэтому он пропускает весь цикл. Что я делаю не так?
1 ответ
Решение
ClassA не имеет свойств, только поля.
public double PropA = 5; // Field
public double PropA { get; set; } // Property
_PropertyInfos не null
, оно пустое.
Либо преобразуйте свои поля в свойства, либо начните использовать this.GetType().GetFields()
обмен PropertyInfo[]
за FieldInfo[]
.