c# - 没有默认值的枚举的 XML 序列化

标签 c# enums xml-serialization

我有一个枚举:

[DataContract]
public enum Relationship
{
    Spouse = 4,
    ResidesWith = 1,
    Parent = 2,
    Other = 3,
    PersonalGuarantor = 5,
    CoApplicant = 6
}

如您所见,零未定义。我围绕永远不会在枚举中定义零的想法构建了我的程序。这让我可以看到哪些是从各种组合框中设置的,哪些是设置为空值的。如果我将零设置为 null 值,则无法区分这两者,而我能够做到这一点至关重要。

由于缺少默认状态,我在尝试序列化值时遇到错误。

有没有办法让我的 xml 序列化跳过没有值(value)的枚举,或者有办法避免这些错误?我真的不想引入默认值。

最佳答案

您需要使用 0 作为枚举值 - 使其成为一个无效的值并进行检查(因为您已经是)。

[DataContract]
public enum Relationship
{
    Invalid = 0,
    Spouse = 4,
    ResidesWith = 1,
    Parent = 2,
    Other = 3,
    PersonalGuarantor = 5,
    CoApplicant = 6
}

不要忘记枚举是基于整数类型(它们的基本类型)的,所以它们总是有一个值(值类型不能为空)并且默认为 0 。使其显式也会使您的代码库中的内容更加清晰。

提示:您也可以在枚举中使用值。

关于c# - 没有默认值的枚举的 XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986188/

相关文章:

java - 打印枚举的名称

php - 用枚举类型提示?

xml-serialization - "The specified type was not recognized"尝试调用 Web 服务调用时出现异常

c# - 如何将 Enumerable.ToList<>() 反序列化为 List<>

serialization - XStream <-> 替代二进制格式(例如 Protocol Buffer )

c# - 你如何制作一个包含多个 "Pages"的程序?

c# - 开源 twain 库

c# - 字节字符串到字节数组c#

c# - 如何在保持比例的同时调整图像字节 [] 的大小?

java - 返回枚举值时,Java 返回什么?值(value)还是引用?