Я сохраняю значения объектов в строках, например,
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
может работать с пользовательскими классами, которые определяют конструктор, принимающий строку!
РЕДАКТИРОВАТЬ2: Тип назначения можно узнать через PropertyType, в конкретном случае, когда Я хочу использовать этот тип функциональности. Я думаю, что Enums было бы легко проанализировать с помощью этого, например,
Type destinationType = info.PropertyType;
Enum.Parse(destinationType, "MyValue");