gpt4 book ai didi

.net - 将空元素反序列化为 null

转载 作者:行者123 更新时间:2023-12-04 14:38:53 25 4
gpt4 key购买 nike

我正在将旧应用程序中的一些 XML 反序列化为当前应用程序中的对象。旧的 XML 通常包含空元素 ( <SomeElement /> ),这些元素当前被反序列化为空字符串 ( "" )。

我同意这是最合适的行为,但这是一种轻微的刺激;我宁愿将它们反序列化为 Nothing或者理想情况下忽略 - 效果是一样的。

有没有办法忽略这些元素?或者我可以将它们反序列化为 Nothing

结论:列出的两种解决方案都有其优点...

如果我只有一个问题属性,Aaron 的解决方案将是理想的 - 它是针对单个问题的单一修复。

如果有多个属性存在问题,则首选 svick 的解决方案。实现 ISerializable 涉及创建构造函数和 GetObjectData 方法,并对每个属性进行特定处理。

我的决定:因为我的问题只涉及一些旧的 XML 文件(它们会随着时间的推移而消失),并且由于 String.IsNullOrEmpty 使我能够忽略这个问题,所以我决定什么也不做。如果没有必要,我不希望维护 ISerializable 接口(interface)的额外开销 - 但在许多情况下,这将是一个很好的解决方案,所以这是我选择的答案。

最佳答案

我没有找到任何其他明确简单的方法来做到这一点。但是您始终可以实现 IXmlSerializable 并自行处理序列化和反序列化:

Public Sub ReadXml(ByVal reader As XmlReader) Implements IXmlSerializable.ReadXml

reader.ReadStartElement()
If (reader.Name = "SomeElement") Then
Dim someElementValue = reader.ReadElementString()

If someElementValue <> String.Empty Then
SomeElement = someElementValue
End If
End If
reader.ReadEndElement()

End Sub

关于.net - 将空元素反序列化为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com