sto memorizzare i valori degli oggetti nelle stringhe per esempio,C# stringa generica parse a qualsiasi oggetto
string[] values = new string[] { "213.4", "10", "hello", "MyValue"};
Esiste un modo genericamente inizializzare i tipi di oggetti appropriati? per esempio, qualcosa come
double foo1 = AwesomeFunction(values[0]);
int foo2 = AwesomeFunction(values[1]);
string foo3 = AwesomeFunction(values[2]);
MyEnum foo4 = AwesomeFunction(values[3]);
dove AwesomeFunction
è la funzione che ho bisogno. L'utilizzo finale è inizializzare proprietà esempio,
MyObject obj = new MyObject();
PropertyInfo info = typeof(MyObject).GetProperty("SomeProperty");
info.SetValue(obj, AwesomeFunction("20.53"), null);
il motivo che devo tale funzionalità è sto memorizzare detti valori in un database, e desiderare di leggere loro tramite una query e poi inizializzare le corrispondenti proprietà di un oggetto . Sarà possibile? L'intero oggetto non viene memorizzato nel database, solo alcuni campi che mi piacerebbe leggere & impostati dinamicamente. So che posso farlo staticamente, ma che diventerà noioso, difficile da mantenere e soggetto a errori con numerosi campi/proprietà diversi.
MODIFICA: i punti bonus se AwesomeFunction
possono funzionare con classi personalizzate che specificano un costruttore che accetta una stringa!
EDIT2: il tipo di destinazione può essere sapere tramite il PropertyType, nel caso specifico in cui voglio usare questo tipo di funzionalità. Penso enumerazioni sarebbe facile analizzare con questo esempio,
Type destinationType = info.PropertyType;
Enum.Parse(destinationType, "MyValue");
re "punti bonus" - sarebbe meglio definire e associare un 'TypeConverter', e avere * che * gestirlo (inoltro al costruttore). Poiché questo è quello che i convertitori di tipi sono progettati per ... –