Обращение к неизвестным до компиляции свойствам объекта - C#
Формулировка задачи:
Доброго времени суток. Есть класс Data с открытыми свойствами:
В программе предполагается задавать объекты с помощью цикла, но при этом класс Data перед компиляцией может изменяться: добавление/удаление приватных полей и открытых свойств, обеспечивающих доступ к этим полям. Вопрос заключается в следующем: как в цикле обратиться ко всем открытым свойствам объекта из этого класса? Вот что я надумал:
Вот собственно два вопроса по коду который в комментариях:
1) как задать i - ое свойство объекта слева от присваивания?
2)как сделать преобразование типов, ведь справа от присвания тип Стринг?
Если можно как то сделать по-другому тоже сойдет. Спасибо за внимание
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; } } }
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() } } }
Решение задачи: «Обращение к неизвестным до компиляции свойствам объекта»
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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д