请为我提供一个精确的教程/网站链接,用于序列化和反序列化c#中的类层次结构。
答案 0 :(得分:1)
您可以使用XmlSerializer类:
var instance = new SomeClass();
var serializer = new XmlSerializer(typeof(SomeClass));
using (var writer = XmlWriter.Create("output.xml"))
{
serializer.Serialize(writer, instance);
}
并反序列化:
var serializer = new XmlSerializer(typeof(SomeClass));
using (var reader = XmlReader.Create("output.xml"))
{
var instance = (SomeClass)serializer.Deserialize(reader);
}
序列化/反序列化过程可以是controlled by using attributes。
另一个常用于XML序列化的流行类是DataContractSerializer,它由WCF使用,但可以在任何应用程序中使用。
答案 1 :(得分:0)
最基本的,xml序列化可以像启动XmlSerializer
并使用它一样简单。但是,您可以使用many many attributes来影响序列化程序,如果无法注释,则可以使用XmlAttributeOverrides
。特别是,既然您提到了层次结构,那么您需要:
[XmlInclude(typeof(SomeDerivedType))]
public class Foo {}
public class SomeDerivedType : Foo {}
关于XmlSerializer
的其他说明:
[XmlIgnore]
来避免向上导航“父”属性)IXmlSerializable
,但我不建议答案 2 :(得分:0)
Deep Serialization: Binary and SOAP Serialization with a Generic Twist
序列化允许您转换 物体图形成线性 字节序列,XML或SOAP。一旦 一个物体被夷为平地,你可以存放 它或通过电线发送。 然后可以是序列化数据 反序列化。反序列化 基本上重建了图表 您最初序列化的对象。 序列化听起来很复杂,但是 在实践中,它很容易因为 .NET框架最需要处理 你的复杂性。