DataContractSerializer обрабатывает отсутствующие значения перечисления во время десериализацииC#

Место общения программистов C#
Ответить
Anonymous
 DataContractSerializer обрабатывает отсутствующие значения перечисления во время десериализации

Сообщение Anonymous »

Есть ли способ обработать отсутствующие значения перечисления во время десериализации значений перечисления строк.
Изначально я думал, что Json.Net и StringEnumConverter используются по умолчанию для этого преобразования, и написал подкласс, который может преобразовывать пропущенные значения, но при проверке трассировки стека выяснилось, что используется EnumDataContract.ReadEnumValue.
Если есть изменения в определении перечисления, я хочу чтобы иметь возможность обрабатывать значение в каждом конкретном случае, до которого значение должно десериализоваться.
Например, вместо получения ожидаемой ниже ошибки из-за изменения ConditionType я хотел бы быть возможность указать словарь, который будет использоваться в случае сбоя, т. е. {"TestComplete":ConditionType.InvalidValue

Код: Выделить всё

UnhandledException caught (SerializationException): Invalid enum value 'TestComplete' cannot be deserialized into type 'ConditionType'. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.
Любые указания о том, как этого добиться или как я могу подключиться/переопределить EnumDataContract
Мой член перечисления помечен, как показано ниже.
Мой член перечисления помечен, как показано ниже.
Мой член перечисления помечен, как показано ниже.
р>

Код: Выделить всё

[DataMember]
public ConditionType Type { get; set; }
Я нашел похожий вопрос, но на него нет ответа.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ialisation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»