Общий синтаксический анализ строки C # для любого объекта

Я сохраняю значения объектов в строках, например,

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");
27
задан abatishchev 19 October 2010 в 08:44
поделиться