Стандартный WCF DataContractSerializer будет сериализовать все, помеченное [DataMember]
- независимо от видимости .NET (общедоступный / защищенный / частный / внутренний).
Когда вы переключаетесь на XmlSerializerFormat, поведение меняется - теперь XmlSerializer будет сериализовать все, что имеет видимость public
, и на нем не отмечен [XmlIgnore]
.
Я бы предположил, что некоторые из ваших классов и участников не помечены public
и, следовательно, больше не сериализуются. Кроме того, XmlSerializer требует, чтобы у классов был явный конструктор без параметров, который будет использоваться при десериализации - есть ли у всех ваших классов это? И конечно, этот конструктор также должен быть public
.