У меня есть файл, содержащий некоторые из переменных класса, и каждая строка представляет собой пару: variable, value. Я ищу способ загрузить их во время выполнения (a-la XmlSerializer), используя отражение.
Есть ли способ проанализировать string в Type, который известен только во время выполнения?
Ниже приведен пример желаемого кода, в котором последняя строка (с pi.SetValue() неверна, поскольку PropertyType имеет класс Type, который не имеет общего метода Parse().
using (var sr = new StreamReader(settingsFileName))
{
String line;
while ((line = sr.ReadLine()) != null)
{
String[] configValueStrs = line.Trim().Split(seps);
PropertyInfo pi = configurableProperties
.Single(p => p.Name == configValueStrs[0].Trim());
//How do I manage this?
pi.SetValue(this, pi.PropertyType.Parse(configValueStrs[1].Trim()), null);
}
}
Поскольку все соответствующие переменные являются Ints, Doubles, Strings или Booleans, в качестве последнего средства, я могу включить тип и использовать соответствующий метод ToType(), но я уверен, что есть более элегантное решение.