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>
このオブジェクトをいくつかのバージョンで問題なくシリアライズおよびデシリアライズしてきました。Humidity をサポートする必要がなくなったため、enum から削除しました。ただし、TypeEnum フィールドの値 Humidity が TypeEnum の有効な値ではないため、XML から逆シリアル化するときに例外が発生します。これは理にかなっていますが、これをどのように処理しますか?
私がやりたいことは、このエラーを無視することです。値を null のままにします。OnUnknownElement XmlDeserilizationEvent クラスを実装してみました。残念ながら、これはこのエラーをキャッチしません。
このエラーをキャッチして無視する方法についてのアイデア (逆シリアル化が完了した後にクリーンアップできます)。
ミッチ