Tengo un archivo que contiene algunas de las variables de una clase, y cada línea es un par: variable , valor. Estoy buscando una manera de cargar estos en tiempo de ejecución (a-la XmlSerializer
), usando la reflexión.C# Parse string para escribir conocido en tiempo de ejecución
¿Hay alguna forma de analizar un string
en un Type
conocido solo en tiempo de ejecución?
El siguiente es un ejemplo de código expresión de deseos, donde la última línea (con la pi.SetValue()
no es correcto, porque PropertyType
es de la clase Type
que no tiene un método genérico 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);
}
}
ya que todos los relevantes las variables son Ints, Dobles, Strings o Booleans, como último recurso, puedo activar el tipo y usar el método correspondiente ToType()
, pero apuesto a que hay una solución más elegante.
Comprobar esto: http: //chrismarinos.com/default-typeconverters-and-objects/ También en mi propia experiencia, la implementación predeterminada no puede hacer nada. – Peter