我有一个枚举:
[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/