c# - 对象 xml 反序列化问题?

标签 c# .net xml serialization xml-serialization

我的对象有父子关系。每个子对象都有一个指向其容器的 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/

相关文章:

.net - 在 Fsharp 中将 XML 文件转换为 CSV 文件

sql-server - 将 XML 数据保存到 SQL Server 的最佳方法是什么?

xml - 使用 Wix 从控制面板使用快捷方式卸载 exe

c# - 为什么在 WPF 中将 BitmapSource 保存为 bmp、jpeg 和 png 时得到完全不同的结果

c# - 重命名 .NET 2.0 可执行文件

c# - ASP.NET Core 发布数组对象 JSON

c# - 在多个连接c#中执行SQL

.net - 从列表中过滤或删除(T 个)

c# - Web.API : Unable to set Culture

.net - 性能 : XmlSerializer vs XmlReader vs XmlDocument vs XDocument