У меня есть файл, содержащий некоторые из переменных класса, и каждая строка представляет собой пару: 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()
, но я уверен, что есть более элегантное решение.