Как создать массив Свойств уже созданных экземпляров объектов C#

Рейтинг: 0Ответов: 0Опубликовано: 13.05.2023

Есть некий класс с полями и свойствами, мне нужно создать массив/список Свойств конкретных уже созданных экземпляров, чтобы динамически отслеживать их значение. Но у меня получается только создать копии этих свойств, которые естественно не обновляются.

Начнем сначала. Задача которую я пытаюсь решить: Вывод на экран свойств объектов разных классов, с помощью отдельного класса Indicator. Как я думал реализовать: Так как массив - это список объектов, а не сами объекты, я посчитал, что можно составить список нужных мне свойств, один раз их обозначить, а затем обновляя данные внутри класса Indicator, обновлять их на экране. Но что-то пошло не так :)

Подскажите как можно в консольном приложении выводить значения свойств объектов не редактируя каждый класс, а через тот класс который создан для вывода на экран.

    class Person
        {      
            public string Name { get; set; }
        }
    
    class Company
        {
            public TypeProduct TypeProduct { get; set; }
        }
    
    class Indicator
        {
            private readonly string name;
            private object[] dynamicVars;
    
            public Indicator(object[] _sourse)
            {
                this.dynamicVars = _sourse;
            }
    
        public string[] DynamicStrings
            {
                get
                {
                    string[] output = new string[dynamicVars.Length];
                    for (int i = 0; i < dynamicVars.Length; i++)
                    {
                        output[i] = dynamicVars[i].ToString();
                        
                    }
                    return output;
                }
            }
        }

static void Main(string[] args)
        {
             while (true)
             {
              RefreshOutput(indicators);
             }
        }

static void RefreshOutput(Indicator[] _indicators)
        {
            int y = 0;
            int x = 0;
            string[] OutputStrs;

            for (int i = 0; i < _indicators.Length; i++)
            {
                y = (i / GridWidth) * CellHeight + 5;
                x = (i % GridWidth) * CellWidth + 1;
                OutputStrs = _indicators[i].DynamicStrings;
                for (int j = 0; j < OutputStrs.Length; j++)
                {
                    Console.CursorTop = y + j;
                    Console.CursorLeft = x;
                    Console.Write(_indicators[i].StaticStrings[j] + OutputStrs[j]);
                }
            }
        }

Ответы

Ответов пока нет.