Sto utilizzando XMLSerializer per salvare questa classe in un file. La classe ha una stringa e un enum come mostrato di seguito:XmlSerializer: Come deserializzare un valore enum che non esiste più
public class IOPoint
{
string Name {get; set;}
TypeEnum {get; set;}
}
public enum TypeEnum
{
Temperature,
Pressure,
Humidity,
}
Quando serializzato è come questo.
<IOPoint>
<Name>Relative Humidity</Name>
<TypeEnum>Humidity</TypeEnum>
</IOPoint>
Ho serializzato e deserializzato questo oggetto senza problemi per diverse versioni. Non voglio più supportare l'umidità, quindi l'ho rimosso dall'enumerazione. Tuttavia, ciò provoca un'eccezione durante la deserializzazione da XML poiché il valore nel campo TypeEnum, Humidity, non è un valore valido per TypeEnum. Questo ha senso, ma come gestirlo?
Quello che mi piacerebbe fare è ignorare questo errore. E lascia il valore come null. Ho provato a implementare la classe OnUnknownElement XmlDeserilizationEvent. Sfortunatamente, questo non rileva questo errore.
Qualsiasi idea su come rilevare e ignorare questo errore (posso pulire dopo che la deserializzazione è completa).
Mitch
Se hai trovato una soluzione mi piacerebbe sapere. Ho un problema correlato in cui il lato server include un nuovo valore di enum flag di cui il client non è a conoscenza, quindi voglio davvero trovare un modo per gestire la serializzazione di quel solo campo. La prossima volta userò solo un int, ma per ora ... la compatibilità a ritroso. – avenmore