Обращение к неизвестным до компиляции свойствам объекта - 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();
}
}