XmlSerializer反序列化
C#中XmlSerializer类实现序列化和反序列化。我有一个父类是电脑类,子类一是笔记本有属性电池,子类二是台式机有自己的属性机箱。当然他们都继承自父类电脑类,Lis...
C#中
XmlSerializer类实现序列化和反序列化。
我有一个父类是电脑类,子类一是笔记本有属性 电池,子类二是台式机有自己的属性机箱。当然他们都继承自父类电脑类,List<父类>的实体里边放了很多个不同子类的实例,有笔记本的,有台式机的,现在已经通过序列化生成了XML格式。
我想再用反序列化将这个XML各式重新变成List,但是用List<父类>接收的时候是空的了 ,应该是子类反序列化的时候不再认识父类了。用var 接收了转换了不行的。 展开
XmlSerializer类实现序列化和反序列化。
我有一个父类是电脑类,子类一是笔记本有属性 电池,子类二是台式机有自己的属性机箱。当然他们都继承自父类电脑类,List<父类>的实体里边放了很多个不同子类的实例,有笔记本的,有台式机的,现在已经通过序列化生成了XML格式。
我想再用反序列化将这个XML各式重新变成List,但是用List<父类>接收的时候是空的了 ,应该是子类反序列化的时候不再认识父类了。用var 接收了转换了不行的。 展开
1个回答
展开全部
试试我写的这个
public class XmlSerializeHelper
{
/// <summary>
/// Serialize QueryBuilder to string
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="o"></param>
/// <returns></returns>
public static string Serialize<T>(T o) where T : class
{
XmlSerializer ser = new XmlSerializer(o.GetType());
StringWriter textWriter = new StringWriter();
ser.Serialize(textWriter, o);
return textWriter.ToString();
}
/// <summary>
/// DeSerialize string to QueryBuilder
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="s"></param>
/// <returns></returns>
public static T DeSerialize<T>(string s) where T : class
{
XmlSerializer ser = new XmlSerializer(typeof(T));
TextReader tr = new StringReader(s);
return ser.Deserialize(tr) as T;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询