Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > [DataContract] vs [Serializable]


Автор: SpaceSpace 14.9.2009, 16:15
Всем привет.
Столкнулся с косяком, не могу понять как раскусить.

Есть сервис и датаконтракт.
сервис хостю на консоли,
запускаю
Генерю проксю по сервису.

Объект помечен [DataContract]

Так вот фишка в том, что когда я что-то запрашиваю у сервиса (метод без параметров) - мне все отлично приходит,
а когда передаю в метод сервиса объект-параметр (генеренный объект)
на сервис приходит пустой объект, - все поля имеют значения по умолчанию 0 и null
вложенные объекты есть, но их поля - тоже 0 и null

Прикол в том, чтьо если поменять атрибуты объекта с DataContract на Serializable - все начинает работать!

Сгенеренные объекты в зависимости от используемого атрибута отличаются.
У Serializable - больше полей(т.к. он весь класс считает сериализуемым)
у DataContract - только те поля которые я пометик как датамембер, но появились куча xxxSpecified полей и пропертей.
 
Объясните плз, почему не удается использовать [DataContract]\[DataMember]?
Где я прогнал?

Автор: SpaceSpace 18.9.2009, 06:57
Вот.

Добавлено @ 06:59
Вот у людей та же проблема.
http://blogs.microsoft.co.il/blogs/oshvartz/archive/2008/09/06/svcutil-generating-wcf-client-and-the-is-field-specified-issue.aspx

http://thecodemonk.com/2009/04/27/first-usage-of-wcf-and-specified-fields/


но решения - жуткий изврат, теб более я публикую сервис и не контролирую того как сгенерят по нему проксю (

Получается если я выставляю сервис наружу, я еще должен дополнительно сообщить клиентам, что надо указать xxxSpecified=true??
это бага по моему.
Как бы вообще отказаться от xxxSpecified полей, чтобы они не генерились?

Автор: PashaPash 18.9.2009, 14:42
SpaceSpace, как именно проксю генеришь? обычный вызов svcutil http://localhost:58797/Service1.svc генерит проксю без всяких xxxSpecified.

Автор: SpaceSpace 18.9.2009, 17:34
PashaPash, я генерю через студию.
я почему то наивно думал что студия юзает тот же svcutil ((

надо будет попробывать автоматизировать генерацию прокси через студию но уже по нормальному.
и посмотреть как работат.

Автор: PashaPash 18.9.2009, 19:06
SpaceSpace, через студию - как Service Reference? Или как Web Reference?

Автор: SpaceSpace 21.9.2009, 07:26
PashaPash, конечно же как ServiceReference ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)