Как автоматически отобразить все свойства класса, который является свойством другого класса? - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу напечатать все значения моего класса, похожие на этот вопрос. Разница в том, что мой класс - это свойство другого класса. Я попробовал следующий простой код:

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 всегда пуст, поэтому он пропускает весь l oop. Что я делаю не так?

1 Ответ

0 голосов
/ 30 апреля 2020

ClassA не имеет свойств, только поля.

public double PropA = 5;          // Field
public double PropA { get; set; } // Property

_PropertyInfos не null, оно пустое.

Либо конвертируйте свои поля в свойства, либо начните использовать this.GetType().GetFields() swapping PropertyInfo[] для FieldInfo[].

...