私は、古いアプリケーションの一部のXMLを現在のアプリケーションのオブジェクトにデシリアライズしています。古いXMLには、空の要素(<SomeElement />
)が存在することが多く、空の文字列(""
)として現在非直列化されています。空の要素をデシリアライズしてヌルとして
私はこれが最も適切な行動であることに同意しますが、軽度の刺激物です。私はむしろ彼らがNothing
としてdeserializedされているか、または理想的には無視されていました - 効果は同じでしょう。
これらの要素を無視する手段はありますか?または、それらをデシリアライズしてNothing
とすることはできますか?
結論:記載されているどちらのソリューションが自分の長所を持って、私はただ一つの問題のプロパティを持っていた場合 ...
アーロンのソリューションは理想的である - それは、1つの問題のために、単一の修正です。
問題が多い複数のプロパティがある場合は、svickの解決策が優先されます。 ISerializableを実装するには、コンストラクタを作成し、各プロパティに対して特定の処理を行うGetObjectDataメソッドを作成します。
私の問題:私の問題はいくつかのレガシーXMLファイル(時間が経つと消え去る)だけであり、String.IsNullOrEmptyは問題を無視できるので、何もしないことに決めました。必要でない場合は、ISerializableインターフェイスを維持するための追加のオーバーヘッドを必要としません - しかし、多くの場合、これは良い解決策になるので、私の選択した答えです。
変更を加えることなく、String.IsNullOrEmpty()は、私のいずれかの方法をカバーします。しかし、私はあなたのソリューションが気に入っています - 基本的に単なる好みであるものに対抗するために、このような特別なコーディングを導入する価値があるかどうかを判断する必要があります... – CJM
シリアル化をカスタマイズする方法があります。何も動作しない場合は、常に 'IXmlSerializable'を実装することができます。 – svick