2012-06-11 5 views
1

У меня есть перечисление:XML Сериализация Перечисления без значений по умолчанию

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

Как вы можете видеть, ноль не определен. Я построил свою программу вокруг идеи, что ноль никогда не будет определен в перечислениях. Это позволяет мне видеть, какие из них были установлены из разных comboBoxes, и какие из них были установлены в нулевое значение. Если я устанавливаю ноль как нулевое значение, нет возможности рассказать обо всех этих двух вещах, и это важно для меня.

Из-за отсутствия состояния по умолчанию, я получаю сообщение об ошибке при попытке сериализации значений.

Есть ли способ, чтобы мои xml-сериализованные пропуски перечислений, которые не имеют значения, или способ избежать этих ошибок? Я действительно не хочу вводить значение по умолчанию.

+0

Какая у вас ошибка? Разве что некоторые поля имеют неназванное значение «Отношения»? –

+0

Это что-то вроде «0» не является допустимым вариантом для FamilyMemberRelationship типа Relationship или что-то в этом роде. Это было разрешено, когда я добавил значения по умолчанию, как предлагал Одед. Я смог внести несколько незначительных изменений в свою программу, чтобы не допустить, чтобы это было бесполезно. –

ответ

6

Вам нужно использовать 0 в качестве значения перечисления - сделать это недопустимым и проверить (поскольку вы уже являетесь).

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

Не забывайте, что перечисляемые основаны на целочисленного типа (их базового типа), так что они будут всегда имеют значение (типы значений не может быть пустым) и по умолчанию будет 0. Сделать это явным также сделает все более ясным в вашей кодовой базе.

Protip: Вы можете использовать отрицательные значения в перечислениях.

Смежные вопросы