WCF Data Contract / Сериализация - PullRequest
4 голосов
/ 20 июля 2010

Я создал простое приложение WCF, которое предоставляет одну операцию. Эта операция принимает составной тип данных в качестве параметра.

Я не украшал этот составной тип данных атрибутом [DataContract]. Но это работает, и я вижу схему для этого в WSDL.

Теперь я понимаю, что этот новый пользовательский тип должен быть украшен атрибутом [Serializable] или [dataContract] для участия в операции веб-служб.

Что мне здесь не хватает?

Ответы [ 2 ]

11 голосов
/ 20 июля 2010

Поддержка POCO появилась в WCF начиная с .NET 3.5 SP1, и вам больше не нужно для украшения ваших объектов с атрибутами [DataContract] и [DataMember].Публичные свойства будут автоматически выставлены.Хотя я бы порекомендовал вам явно пометить их этими атрибутами.

5 голосов
/ 20 июля 2010

Как говорит Дарин, sp1 ввел поддержку предполагаемых контрактов данных .Если маршаллированный тип является публичным типом и не имеет атрибута DataContract, WCF автоматически выведет такой атрибут и применит атрибут DataMemeber ко всем открытым членам типа.

В своемКнига "Программирование служб WCF", говорит Ювал Леви;

По моему мнению, полагаться на предполагаемые контракты на данные - это неаккуратный взлом, который идет вразрез с большинством всего остального в WCF.... Используйте атрибут DataContract и не забывайте о своих контрактах с данными.Это позволит вам использовать такие функции контракта с данными, как управление версиями.

...