У меня проблемы с поиском общего решения для работы с полями Enum в WPF и WCF, мне нужна небольшая помощь. Поясним на примере:
При создании лица со значением enum [мужчина, женщина] я вижу три возможности:
Мужской по умолчанию -> Есть две возможности, но одна по умолчанию. Нет проблем с привязкой ComboBox.SelectedValue и нет проблем с сериализацией WCF, если только женщина не чувствует себя завершенной:)
((Пол) (3)) По умолчанию не определено значение -> Есть две возможности, но в начале пользователь вынужден выбрать одну. ComboBox.SelectedValue правильно устанавливает SelectedIndex = -1, но WCF выбрасывает:
Значение перечисления «3» недопустимо для типа «Пол» и не может быть сериализовано. Убедитесь, что необходимые значения перечисления присутствуют и помечены атрибутом EnumMemberAttribute, если тип имеет атрибут DataContractAttribute.
Свойство Sex имеет значение nullable -> Это необязательно для установки пола, и вы можете даже сбросить его, как только выберете один.
К сожалению, случай 2 является наиболее распространенным, но мы не видим простого способа справиться с ним без таких хаков, как:
- Определите значение «Неизвестно» для Пола, это значение недопустимо для сущности, я бы подумал, не будет ли это наиболее распространенным сценарием.
- Пометить перечисление как [Flags], чтобы WCF мог кодифицировать «Мужчина, Женщина» как неизвестное.
- Украсьте свойство sex чем-то вроде [ComboHintUnkwnownOnNew].
- Установите SelectedIndex = -1, сохраняя привязку как в WPF.
Я знаю, что это решение о дизайне мысли, а не конкретная проблема, но я был бы признателен за помощь.