2009-05-19 14 views
4

オブジェクトをシリアル化する必要があるため、デシリアライズ時にアセンブリのバージョンが変更されている可能性があります。さらに、オブジェクトが少し変化することもあります。どちらの方がバージョン管理が便利ですか? XmlSerializerとDataContractSerializerの比較

XmlSerializerは型情報を格納せず、オブジェクトが少し変更された場合でも失敗しませんが、XmlSerializerはプライベートプロパティまたは内部プロパティを属性でマークできないスーパークラスからシリアル化できません。 私はDataContractSerializerを見ました。スーパークラスのプライベート/内部プロパティの問題は解決され、すべてのプロパティにマークを付ける必要がありますが、タイプ情報はどうですか?また、いくつかのプロパティが削除、名前変更、または追加された場合、DataContractSerializerはどのように動作しますか?

+0

をあなたはまた、NetDataContractSerializer http://msdn.microsoft.com/en-us/library/systemに興味があるかもしれません。 runtime.serialization.netdatacontractserializer.aspx .NETオブジェクト専用です。 – bendewey

+0

NetDataContractSerializerは、シリアル化されたオブジェクトのexplizit型定義を格納します。厳密な名前付けを使用するので、別のアセンブリバージョンでオブジェクトを逆シリアル化しようとすると、多くの問題が発生します。 – Enyra

答えて

2

私はDataContractSerializerでテストを行いました。DataContractSerializerはオブジェクトの変更に対して非常に寛容であるようですので、私はこのアプローチを使用します。

0

必要に応じてXmlSerializerを使用することはできます。しかし、IXmlSerializableインターフェイスを使用してカスタムシリアル化ロジックを実装する必要があります。

1

これはWCFに関する質問としてマークされていませんが、あなたがDataContractSerializerについて話していることから、あなたがWCF内で作業していると思います。そのような場合は、IExtensibleDataObjectインターフェイスを調べるのが面倒かもしれません。

は参照してください:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx

http://msdn.microsoft.com/en-us/library/ms731138.aspx

関連する問題