Nat*_*ist 1 c# enums xml-serialization
我有一个枚举:
[DataContract]
public enum Relationship
{
Spouse = 4,
ResidesWith = 1,
Parent = 2,
Other = 3,
PersonalGuarantor = 5,
CoApplicant = 6
}
Run Code Online (Sandbox Code Playgroud)
如您所见,零未定义.我构建了我的程序,认为永远不会在枚举中定义零.这允许我看到哪些已经从各种组合框设置,哪些被设置为空值.如果我将零设置为空值,则无法区分这两个事物,而且我必须能够这样做.
由于缺少默认状态,当我尝试序列化值时出现错误.
有没有办法让我的xml序列化跳过没有值的枚举,或者避免这些错误的方法?我真的不想引入默认值.
您需要使用0作为枚举值 - 使其成为无效的值并且您检查(因为您已经).
[DataContract]
public enum Relationship
{
Invalid = 0,
Spouse = 4,
ResidesWith = 1,
Parent = 2,
Other = 3,
PersonalGuarantor = 5,
CoApplicant = 6
}
Run Code Online (Sandbox Code Playgroud)
不要忘记枚举是基于整数类型(它们的基类型),因此它们将始终具有值(值类型不能为null)并且默认为0.明确这一点也会使代码库中的内容更加清晰.
Protip:您也可以在枚举中使用负值.