我有以下文字:
id=1
familyName=Rooney
givenName=Wayne
middleNames=Mark
dateOfBirth=1985-10-24
dateOfDeath=
placeOfBirth=Liverpool
height=1.76
twitterId=@WayneRooney
行以“\n”分隔,对以“=”分隔。
我有一个具有 Id、FamilyName、GivenName 等属性的 Person 类。
有什么简单的方法可以将上述文本反序列化为 Person 对象,然后使用正确的行和对分隔符将 Person 对象序列化为上述文本?
我希望有类似 TextSerializer 的东西吗?
基本上,我需要从文件中读取文本,例如person1.txt 然后将其反序列化为 Person 对象。
如果可能,我想避免为每个属性手动硬编码。谢谢,
反射在这里可以提供帮助,无需硬编码属性名称和使用第三方库
var person = Deserialize<Person2>("a.txt");
T Deserialize<T>(string fileName)
{
Type type = typeof(T);
var obj = Activator.CreateInstance(type);
foreach (var line in File.ReadLines(fileName))
{
var keyVal = line.Split('=');
if (keyVal.Length != 2) continue;
var prop = type.GetProperty(keyVal[0].Trim());
if (prop != null)
{
prop.SetValue(obj, Convert.ChangeType(keyVal[1], prop.PropertyType));
}
}
return (T)obj;
}
public class Person2
{
public int id { set; get; }
public string familyName { set; get; }
public string givenName { set; get; }
public string middleNames { set; get; }
public string dateOfBirth { set; get; }
public string dateOfDeath { set; get; }
public string placeOfBirth { set; get; }
public double height { set; get; }
public string twitterId { set; get; }
}
我是一名优秀的程序员,十分优秀!