C# 不带默认值的枚举的XML序列化
我有一个枚举:C# 不带默认值的枚举的XML序列化,c#,enums,xml-serialization,C#,Enums,Xml Serialization,我有一个枚举: [DataContract] public enum Relationship { Spouse = 4, ResidesWith = 1, Parent = 2, Other = 3, PersonalGuarantor = 5, CoApplicant = 6 } 如您所见,零没有定义。我构建程序的想法是,枚举中永远不会定义零。这使我能够看到哪些已从各种组合框中设置,哪些已设置为空值。如果我把零设为空值,就没有办法区分这两件事
[DataContract]
public enum Relationship
{
Spouse = 4,
ResidesWith = 1,
Parent = 2,
Other = 3,
PersonalGuarantor = 5,
CoApplicant = 6
}
如您所见,零没有定义。我构建程序的想法是,枚举中永远不会定义零。这使我能够看到哪些已从各种组合框中设置,哪些已设置为空值。如果我把零设为空值,就没有办法区分这两件事,我必须能够做到这一点
由于缺少默认状态,我在尝试序列化值时出错
有没有办法让我的xml序列化没有值的跳过枚举,或者有没有办法避免这些错误?我真的不想引入默认值 您需要使用0作为枚举值-将其设置为无效的值,并按实际情况进行检查
[DataContract]
public enum Relationship
{
Invalid = 0,
Spouse = 4,
ResidesWith = 1,
Parent = 2,
Other = 3,
PersonalGuarantor = 5,
CoApplicant = 6
}
不要忘记枚举是基于一个整数类型,即它们的基类型,因此它们总是有一个值。值类型不能为null,默认为0。明确这一点也将使代码库中的内容更加清晰
Protip:您也可以在枚举中使用负值。您需要使用0作为枚举值-将其设置为无效值,并按现有状态进行检查
[DataContract]
public enum Relationship
{
Invalid = 0,
Spouse = 4,
ResidesWith = 1,
Parent = 2,
Other = 3,
PersonalGuarantor = 5,
CoApplicant = 6
}
不要忘记枚举是基于一个整数类型,即它们的基类型,因此它们总是有一个值。值类型不能为null,默认为0。明确这一点也将使代码库中的内容更加清晰
Protip:您也可以在枚举中使用负值。您得到的确切错误是什么?是因为某些字段具有未命名的关系值吗?可能是“0”不是关系或类似类型的FamilyMemberRelationship的有效选项。当我按照Oded的建议输入默认值时,一切都解决了。我能够对我的程序做一些小的修改,以防止它在其他地方弄乱东西。你得到的确切错误是什么?是因为某些字段具有未命名的关系值吗?可能是“0”不是关系或类似类型的FamilyMemberRelationship的有效选项。当我按照Oded的建议输入默认值时,一切都解决了。我能够对我的程序进行一些小的更改,以防止它在其他地方弄乱东西。值得注意的是,所有枚举都为零值是。值得注意的是,所有枚举都为零值是。