ジェネリック リストの逆シリアル化に問題があります。私のクラスはIXmlSerializableインターフェイスを実装し、いくつかのMyFilterオブジェクトをFiltersプロパティに格納します。次のコードが含まれています。
書き込みXml:
XmlSerializer serializer = new XmlSerializer(typeof(List<MyFilter>));
serializer.Serialize(bodyWriter, Filters.ToList());
読み取りXml:
XmlSerializer serializer = new XmlSerializer(typeof(List<MyFilter>));
Filters = (List<MyFilter>)serializer.Deserialize(reader);
シリアル化や xml 構造自体に問題はありません。MyFilterクラスは、IXmlSerializable インターフェイスも実装します。
この問題は、xml が逆シリアル化されるときに表示されます。実行時に、フィルターが現在利用できないデータに依存している場合、一部のMyFilterオブジェクトの逆シリアル化が失敗することがあります。これは「設計どおりに機能する」ですが、もちろん例外を除いてプロセス全体を強制終了します。
私の質問は次のとおりです。デシリアライズ中に例外をスローするMyFilterオブジェクトをスキップするにはどうすればよいですか?
コレクションを手動で逆シリアル化し、例外をキャッチして、次の要素に進む必要があると思います。これは良いアプローチですか?そして、それはどのように行うことができますか?