Как часть попытки изучить WCF, я читаю о сериализации. Я пытаюсь понять, как я могу контролировать сериализацию в .NET 3.5. Например, у меня есть простой класс с несколькими общедоступными свойствами. Добавив атрибут DataContract к этому классу, я могу, например, управлять пространством имен и именем класса по мере его сериализации.
С другой стороны, я мог бы добавить атрибут Serializable (возможно, даже не обязательно) и атрибут XmlType, который также позволяет мне контролировать пространство имен и имя, которое используется для сериализации класса.
Я реализовал оба подхода и использую класс в ServiceContract как часть вызова интерфейса. Затем я использую Http-анализатор, чтобы увидеть, как различные объекты сериализуются, и я заметил, что XmlType вообще не влиял на xml в http.
Я пытался понять это весь день. Чего мне не хватает?
Обновление:
Я понимаю разницу между ними и почему они там. Я просто не понимаю, почему я не могу повлиять на сгенерированный XML с помощью XmlType или (только что попробовал XmlRoot).
По сути, вы можете управлять всеми деталями сериализации, реализуя IXmlSerializable, за исключением пространств имен и имени элемента верхнего уровня. Для этого я предполагал, что вам понадобится атрибут XmlType или XmlRoot. Был ли я не прав?