この質問は、シリアライザー間の機能の違いをうまく説明しています。BinaryFormatter
高速で、XmlSerializer
相互運用可能などです。私はそれを知っています。
しかし、意図の違いは何ですか? 各クラスはどのようなユースケースのために設計されましたか?
特に:
- 十分に高速に見えるのに、なぜ彼ら
XmlSerializer
はプライベートデータをブラインドにすることにしたのですかBinaryFormatter
(おそらく遅いリフレクションを介して) XmlSerializer
、SoapFormatter
およびという 3 つの個別の XML シリアライザーを作成したのはなぜDataContractSerializer
ですか?- オプトインとオプトアウトがあるのはなぜですか?
- なぜ彼らはインターフェイスをそれほど一貫性のないものにしたのですか?
OnDeserializedCallback
たとえば、XmlSerializer は同等のものを提供しません。別の例 - XmlSerializer はIsNullable
[XmlIgnore]
、 BinarySerializer が使用するもの[OptionalField]
と[NonSerialized]
.