1

我有一个枚举:

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

如您所见,未定义零。我围绕这个想法构建了我的程序,即永远不会在枚举中定义零。这让我可以看到哪些组合框已从各种组合框中设置,哪些组合框设置为空值。如果我将零值设置为空值,则无法将这两件事区分开来,而我必须能够做到这一点。

由于缺少默认状态,当我尝试序列化值时出现错误。

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

4

1 回答 1

6

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

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

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

Protip:您也可以在枚举中使用负值。

于 2012-06-11T19:19:55.997 回答