Обращение к неизвестным до компиляции свойствам объекта - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Есть класс Data с открытыми свойствами:
    class Data
    {
        private int m1;
        private string str1;
 
        public int M1
        {
            get { return m1; }
            set { m1 = value; }
        }
 
        public string Str1
        {
            get { return str1; }
            set { str1 = value; }
        }
    }
В программе предполагается задавать объекты с помощью цикла, но при этом класс Data перед компиляцией может изменяться: добавление/удаление приватных полей и открытых свойств, обеспечивающих доступ к этим полям. Вопрос заключается в следующем: как в цикле обратиться ко всем открытым свойствам объекта из этого класса? Вот что я надумал:
    class Program
    {
        static void Main(string[] args)
        {
            Type myType = typeof(Data);
            PropertyInfo[] myPropInfo = myType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            Data myData = new Data();
            for (int i = 0; i < myPropInfo.Length; i++)
            {
                Console.WriteLine("Enter " + myPropInfo[i].Name);
                //тут должно стоять че то типо: i - ое свойство myData:= Console.ReadLine()
            }
        }
    }
Вот собственно два вопроса по коду который в комментариях: 1) как задать i - ое свойство объекта слева от присваивания? 2)как сделать преобразование типов, ведь справа от присвания тип Стринг? Если можно как то сделать по-другому тоже сойдет. Спасибо за внимание

Решение задачи: «Обращение к неизвестным до компиляции свойствам объекта»

textual
Листинг программы
//....
//используем свой метод преобразования
object Res = MyConverter(Console.ReadLine(), myType);
//...
//приблизительная реализация
public static object MyConverter(string value, Type myType)
{ 
    switch(myType)
    {
       case typeof(MyClass): return MyClass(value);
       default: throw new InvalidCastException();
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы