DataContract не использует свойство Name, указанное в атрибуте - PullRequest
2 голосов
/ 04 февраля 2011

Я не знаю, какой сериализатор используется, но я вижу некоторые противоречивые действия во время сериализации при использовании свойства Name атрибута datacontract.

Вот пример того, что я делаю:

[XmlRoot(ElementName = "ASerCollection")]
public class SerCollection : List<ColElem>
{
}

[DataContract(Name = "SomethignElse", Namespace = "")]
public class ColElem
{

}

Проблема, с которой я столкнулся, заключается в том, что сериализация генерирует что-то вроде следующего XML:

<ASerCollection>
<ColElem />
</ASerCollection>

Я делаю это как часть службы WCF. Пожалуйста, дайте мне знать, если я могу что-то сделать по-другому, чтобы принудительно использовать атрибут «Имя» моего контракта на данные.

Спасибо

1 Ответ

2 голосов
/ 05 февраля 2011

Это потому, что:

  • XMLRootAttribute используется XmlSerializer
  • DataContractAttribute используется DataContractSerializer

Один не понимает атрибуты другого.В зависимости от того, что вы пытаетесь сделать, и отношений между вашими классами, я думаю, вам следует прочитать о том, как направлять вышеупомянутые сериализаторы, и выбрать тот, который соответствует потребностям.

Вот пара ссылок:

Надеюсь, это немного поможет.

...