gpt4 book ai didi

c# - 反序列化枚举

转载 作者:IT王子 更新时间:2023-10-29 04:52:11 25 4
gpt4 key购买 nike

我有一个 xml,其中一个元素具有可以为空的属性。例如,

<tests>
<test language="">
.....
</test>
</tests>

现在,语言是从模式创建的类中的枚举类型。如果指定了语言,它就可以正常工作,如果它是空白的,它就无法反序列化(如示例所示)。

编辑:反序列化代码:

XmlSerializer xmlserializer = new XmlSerializer(type);
StringReader strreader = new StringReader(stringXML);
Object o = serializer.Deserialize(strreader);

我该如何处理这种情况

最佳答案

<罢工>您可以将枚举属性声明为可为空:

public Language? Language { get; set; }

<罢工>


编辑:好的,我刚试过,它不适用于属性......这是另一个选择:不要直接序列化/反序列化这个属性,而是序列化一个字符串属性:

[XmlIgnore]
public Language Language { get; set; }

[XmlAttribute("Language")]
public string LanguageAsString
{
get { return Language.ToString(); }
set
{
if (string.IsNullOrEmpty(value))
{
Language = default(Language);
}
else
{
Language = (Language)Enum.Parse(typeof(Language), value);
}
}
}

关于c# - 反序列化枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250656/

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