Перечисления, DataContracts и WCF вопрос - PullRequest
2 голосов
/ 13 мая 2010

Я новичок в WCF и у меня простой вопрос ...

Мой класс DataContract возвращает тип Enum потребителю из одного из его открытых методов.

Потребитель может видеть тип перечисления и создавать экземпляры переменных этого типа.

Однако я не предоставил ни [DataContract], ни [EnumMember] для перечисления в сервисе.

Мой вопрос: почему клиент все еще может это видеть? Я подумал, что мне нужно было бы сделать его [DataContract] для сериализации вместе с бизнес-объектом, нет?

Ответы [ 2 ]

1 голос
/ 13 мая 2010

Да - вам нужно было - до .NET 3.5 SP1.

Microsoft "ослабила" правила, и теперь DataContractSerializer будет вести себя как XmlSerializer, если вы ни к чему не добавите атрибуты [DataContract] и [DataMember]: он просто просто сериализует все открытые свойства и необходимые типы.

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

0 голосов
/ 29 мая 2018

если мы не добавим атрибуты [DataContract] и [DataMember] на что-либо, это автоматически сериализует все открытые свойства и необходимые типы. Эта функция поддерживается более поздней версией .NET3.5 SP1.

...