Я храню значения объектов в строках, например,
string[] values = new string[] { "213.4", "10", "hello", "MyValue"};
Есть ли способ общей инициализации соответствующих типов объектов?например, что-то вроде
double foo1 = AwesomeFunction(values[0]);
int foo2 = AwesomeFunction(values[1]);
string foo3 = AwesomeFunction(values[2]);
MyEnum foo4 = AwesomeFunction(values[3]);
, где AwesomeFunction
- это нужная мне функция.Конечное использование заключается в инициализации свойств, например,
MyObject obj = new MyObject();
PropertyInfo info = typeof(MyObject).GetProperty("SomeProperty");
info.SetValue(obj, AwesomeFunction("20.53"), null);
. Причина, по которой мне нужны такие функции, заключается в том, что я храню указанные значения в базе данных и хочу прочитать их с помощью запроса, а затем инициализировать соответствующие свойстваобъект.Это будет возможно?Весь объект не хранится в базе данных, только несколько полей, которые я хотел бы прочитать и установить динамически.Я знаю, что могу делать это статически, однако это станет утомительным, трудным в обслуживании и склонным к ошибкам с многочисленными различными полями / свойствами, которые читаются.
РЕДАКТИРОВАТЬ: Бонусные баллы, если AwesomeFunction
может работать с пользовательскимиклассы, которые определяют конструктор, который принимает строку!
EDIT2: Тип назначения можно узнать через PropertyType, в конкретном случае, когда я хочу использовать этот тип функциональности.Я думаю, что Enums будет легко разобраться с этим, например,
Type destinationType = info.PropertyType;
Enum.Parse(destinationType, "MyValue");