Ich verwende den XMLSerializer, um diese Klasse in einer Datei zu speichern. Die Klasse hat eine Zeichenkette und eine Enumeration, wie unten gezeigt:XmlSerializer: Wie ein Enum-Wert deserialize, der nicht mehr existiert
public class IOPoint
{
string Name {get; set;}
TypeEnum {get; set;}
}
public enum TypeEnum
{
Temperature,
Pressure,
Humidity,
}
Wenn serialisiert, sieht es so aus.
<IOPoint>
<Name>Relative Humidity</Name>
<TypeEnum>Humidity</TypeEnum>
</IOPoint>
Ich habe dieses Objekt für mehrere Versionen ohne Probleme serialisiert und deserialisiert. Ich möchte nicht länger Feuchtigkeit unterstützen, also habe ich sie aus dem Enum entfernt. Dies führt jedoch zu einer Ausnahme beim Deserialisieren aus XML, da der Wert im TypeEnum-Feld Humidity kein gültiger Wert für TypeEnum ist. Das macht Sinn, aber wie geht das?
Was ich tun möchte, ist diesen Fehler einfach zu ignorieren. Und belassen Sie den Wert als null. Ich habe versucht, die OnUnknownElement XmlDeserilizationEvent-Klasse zu implementieren. Leider fängt dies diesen Fehler nicht ein.
Irgendwelche Ideen, wie man diesen Fehler fängt und ignoriert (ich kann aufräumen, nachdem die Deserialisierung abgeschlossen ist).
Mitch
Wenn Sie eine Lösung gefunden haben würde ich gerne wissen. Ich habe ein verwandtes Problem, bei dem die Serverseite einen neuen Enum-Flag-Wert enthält, über den der Client nichts weiß, also möchte ich wirklich einen Weg finden, die Serialisierung nur dieses einen Feldes zu verwalten. Das nächste Mal werde ich nur eine int, aber für jetzt ... Rückwärtskompatibilität verwenden. – avenmore