C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案
1、DataContract继承对子类进行序列化的解决方案
第一种是在 [DataContract, KnownType(typeof(继承的子类))]添加 KnownType(typeof(继承的子类))即可,
第二种是在序列化的时候,添加类型
DataContractSerializer dcs = new DataContractSerializer(typeof(T),new Type[] { typeof(继承的子类1), typeof(继承的子类1) })
using System.Runtime.Serialization;
namespace SupremeConsole
{
/// <summary>
/// 测试类,该类必未标记为可序列化,DataContractJsonSerialize,XmlSerialize可以正常序列化
/// </summary>
//继承TestClass的子类SubTestClass的序列化
//[DataContract, KnownType(typeof(继承的子类)), KnownType(typeof(继承的子类1))]//KnownType指明了,继承子类的序列化的类型如 KnownType(typeof(SubTestClass)),或者再序列化的时候添加子类类型DataContractSerializer dcs = new DataContractSerializer(typeof(T),new Type[] { typeof(继承的子类1), typeof(继承的子类1) }),如:typeof(SubTestClass);
[DataContract] //如果类型加了DataContract特性标记,而成员字段没有加DataMember特性标记的话,只有类型会序列化,