gpt4 book ai didi

c# - XmlSerializer - 如何在反序列化枚举时设置默认值?

转载 作者:太空狗 更新时间:2023-10-30 01:22:37 24 4
gpt4 key购买 nike

我有一个看起来像这样的类(大大简化):

public class Foo
{
public enum Value
{
ValueOne,
ValueTwo
}

[XmlAttribute]
public Value Bar { get; set; }
}

我正在从外部来源接收一个 XML 文件。他们的文档指出 Foo 元素在 Bar 属性中只会有“ValueOne”或“ValueTwo”(他们不提供 XSD)。

所以,我这样反序列化它:

 var serializer = new XmlSerializer(typeof(Foo));
var xml = "<Foo Bar=\"ValueTwo\" />";
var reader = new StringReader(xml);

var foo = (Foo)serializer.Deserialize(reader);

... 一切正常。

然而,昨晚,他们给我发送了一些看起来像 this 的 XML,我的反序列化失败了(应该如此):<Foo Bar="" />

有没有一种好的方法来围绕这个进行防御性编码?理想情况下,我想说“如果这里出现问题,则默认为 ValueOne”。我不想丢弃整个 XML 文件,因为单个属性被破坏了。

最佳答案

你可以像这样设置你的枚举,所以这会将枚举的“”值设置为 Unknown = 0 有点像默认值

public enum Foo
{
[XmlEnum(Name = "")]
Unknown =0,
[XmlEnum(Name = "Single")]
One,
[XmlEnum(Name = "Double")]
Two
}

更多细节检查:XmlEnumAttribute Class

关于c# - XmlSerializer - 如何在反序列化枚举时设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159998/

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