2010-05-13 2 views
2

Я новичок в WCF и есть простой вопрос ...Перечисление, DataContracts и WCF вопрос

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

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

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

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

ответ

1

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

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

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

+0

Спасибо marc, что выяснило это. – NotNowJohn

Смежные вопросы