Я храню значения объектов в строках, например,
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);
Причина, по которой мне нужна такая функциональность, заключается в том, что я храню указанные значения в базе данных и хочу прочитать их через запрос и затем инициализировать соответствующие свойства объекта. Это будет возможно? Весь объект не хранится в базе данных, всего несколько полей, которые я бы хотел прочитать и установить динамически. Я знаю, что могу сделать это статически, однако это будет утомительно, трудно поддерживать, и читаются ошибки с множеством различных полей/свойств.
EDIT: бонусные точки, если AwesomeFunction
может работать с пользовательскими классами, которые определяют конструктор, который принимает строку!
EDIT2: Тип адресата можно узнать через PropertyType, в конкретном случае, когда я хочу использовать этот тип функций. Я думаю, что Enums было бы легко разобрать с этим, например,
Type destinationType = info.PropertyType;
Enum.Parse(destinationType, "MyValue");