Używam XMLSerializer do zapisania tej klasy do pliku. Klasa ma łańcuch i wyliczenie, jak pokazano poniżej:XmlSerializer: Jak odserializować wartość wyliczenia, która już nie istnieje
public class IOPoint
{
string Name {get; set;}
TypeEnum {get; set;}
}
public enum TypeEnum
{
Temperature,
Pressure,
Humidity,
}
Po serializacji wygląda tak.
<IOPoint>
<Name>Relative Humidity</Name>
<TypeEnum>Humidity</TypeEnum>
</IOPoint>
Serializuję i deserializuję ten obiekt bez problemów dla kilku wersji. Nie chcę już wspierać Wilgotności, więc usunąłem ją z enum. Powoduje to jednak wyjątek podczas deserializacji z XML, ponieważ wartość w polu TypeEnum, Humidity, nie jest poprawną wartością TypeEnum. Ma to sens, ale jak sobie z tym poradzić?
Co chcę zrobić, to po prostu zignorować ten błąd. I pozostaw wartość jako zero. Próbowałem już implementacji klasy OnUnknownElement XmlDeserilizationEvent. Niestety, nie łapie tego błędu.
Wszelkie pomysły dotyczące przechwytywania i ignorowania tego błędu (mogę wyczyścić po zakończeniu deserializacji).
Mitch
Jeśli znalazłeś rozwiązanie, które chciałbym poznać. Mam podobny problem, gdy strona serwera zawiera nową wartość flagi wyliczeniowej, o której klient nie wie, więc naprawdę chcesz znaleźć sposób na zarządzanie serializacją tylko jednego pola. Następnym razem użyję tylko int, ale na razie ... kompatybilność wsteczna. – avenmore