durch folgende Textdatei Inhalt:
public class StringLinesDeserializer<T> where T : new()
{
public T Deserialize(string[] assignments)
{
T result = new T();
foreach (string assignment in assignments)
{
int commaPos = assignment.IndexOf(',');
string propertyName = assignment.Substring(0, commaPos);
string propertyValue = assignment.Substring(commaPos + 1);
AssignProperty(result, propertyName, propertyValue);
}
return result;
}
private void AssignProperty(object obj, string propertyName, string propertyValue)
{
PropertyInfo property = obj.GetType().GetProperty(propertyName);
property.SetValue(obj, Convert.ChangeType(propertyValue, property.PropertyType), null);
}
}
könnte wie folgt verwendet werden :
a, 20
b, 14
Wenn Sie Car
Klasse wie folgt definiert:
public class Car
{
public object a { get; set; }
public object b { get; set; }
}
Versuche folgende Methode:
private Car GetCarFromFile(string strFilePath)
{
var lstCarFile = System.IO.File.ReadAllLines(strFilePath);
var car = new Car();
foreach (var c in lstCarFile)
{
var name = c.Split(',')[0].Trim();
var value = c.Split(',')[1].Trim();
car.GetType().GetProperty(name).SetValue(car, value, null);
}
return car;
}
das genannte Verfahren einfach aufrufen Pfad Parameter der Textdatei übergeben:
var car = GetCarFromFile("D:/CarMembersValue.txt");
Sie sollten etwas verwenden, das existiert und dies bereits tut, wie XML, JSON, etc, anstatt zu versuchen, das Rad neu zu erfinden. – Nasreddine
Es wird wahrscheinlich einfacher sein, einige Standard-Serialisierung wie JSON oder Xml zu verwenden. Warum bevorzugen Sie das Format, das Sie in der Frage beschreiben? – faester
Es ist nicht so, dass ich das bevorzuge, das ist die Idee, die ich habe. Wenn es einen anderen Weg gibt, dies zu tun, werde ich mehr als glücklich sein zu wissen. :) – Nowaczek