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>
私はこのオブジェクトをいくつかのバージョンで問題なくシリアル化およびデシリアライズしてきました。私はもはや湿度をサポートしたくないので、enumからそれを削除しました。ただし、TypeEnumフィールドの値HumidityがTypeEnumの有効な値ではないため、XMLからデシリアライズするときに例外が発生します。これは理にかなっていますが、これをどのように処理するのですか?
私がしたいのは、このエラーを無視するだけです。値をnullのままにします。私はOnUnknownElement XmlDeserilizationEventクラスを実装しようとしました。残念ながら、このエラーは発生しません。
このエラーをキャッチして無視する方法については、アイデアがありません(デシリアライズが完了したら削除できます)。
ミッチは
あなたが知りたい解決策を見つけた場合は、私は、クライアントが知らない新しいenumフラグ値をサーバーサイドに含めているので、実際にはそのフィールドのシリアル化を管理する方法を見つけたいという、関連する問題があります。次回はintを使っていますが、今は... backward互換です。 – avenmore