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