Да - вам нужно было - до .NET 3.5 SP1.
Microsoft "ослабила" правила, и теперь DataContractSerializer
будет вести себя как XmlSerializer
, если вы ни к чему не добавите атрибуты [DataContract]
и [DataMember]
: он просто просто сериализует все открытые свойства и необходимые типы.
Хотя это может быть «более простым» подходом для простого сценария, вы также теряете много контроля над пространством имен, упорядочением и т. Д., Поэтому я предпочитаю по-прежнему применять эти атрибуты явно, просто чтобы четко выразить (и документировать!) Мои намерение. Но в .NET 3.5 SP1 он больше не требуется и не поддерживается DataContractSerializer
.