我的对象有父子关系。每个子对象都有一个指向其容器的 Parent 属性。在应用程序中创建此对象时,它已设置,因此没有问题。此 Parent 属性标有 XmlIgnore 特性,因为它需要设置为其运行时父实例。那么,在对象被反序列化之后,初始化这个 Parent 属性的最佳方式是什么?是否存在“反序列化已完成”事件或类似事件?
编辑:我说的是 C# WPF 中的 XmlSerializer。我不想要二进制序列化器。
最佳答案
你的问题有点缺乏细节,但根据你描述的一些属性和特性,我将假设你正在使用 .NET Framework 中的 XMLSerializer
。
您可能知道 OnDeserialized
attribute ,您可以使用它来标记您希望在对象被反序列化后调用的特定方法。不幸的是,这仅适用于二进制、SOAP 和 DataAttribute 格式化程序,不适用于 XMLSerializer
。
为了使用 XMLSerializer
实现同样的功能,您必须实现 IXmlSerializable
interface自己在要序列化为 XML 的类上。这将允许您完全控制类实例的序列化和反序列化方式,包括在反序列化对象后运行以初始化 Parent
属性的代码。
CodeProject 上有一篇很好的示例文章,描述了如何正确实现 IXmlSerializable
可用 here .
关于c# - 对象 xml 反序列化问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172013/