XmlSerializer: как десериализовать значение перечисления, которое больше не существует

Я использую XMLSerializer для сохранения этого класса в файл. Класс имеет строку и перечисление, как показано ниже:

public class IOPoint
{
     string Name {get; set;}
     TypeEnum {get; set;}
}


public enum TypeEnum
{
    Temperature,
    Pressure,
    Humidity,
}

При сериализации это выглядит так.

<IOPoint>
  <Name>Relative Humidity</Name>
  <TypeEnum>Humidity</TypeEnum>
</IOPoint>

Я сериализовал и десериализовал этот объект без проблем для нескольких версий. Я больше не хочу поддерживать влажность, поэтому удалил ее из перечисления. Однако это вызывает исключение при десериализации из XML, поскольку значение в поле TypeEnum, Humidity, не является допустимым значением для TypeEnum. Это имеет смысл, но как с этим справиться?

Я бы просто проигнорировал эту ошибку. И оставьте значение равным нулю. Я попытался реализовать класс OnUnknownElement XmlDeserilizationEvent. К сожалению, это не улавливает эту ошибку.

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

Митч

8
задан Mitch 22 May 2012 в 18:53
поделиться