Служба WCF не возвращает измененный объект - PullRequest
1 голос
/ 01 сентября 2009

У меня есть объект, который я передаю службе WCF. Затем на сервере служба изменяет некоторые свойства объекта и возвращает int.

На стороне клиента после вызова службы изменений, внесенных в свойства объектов, не существует.

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

Есть идеи как это исправить?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2009

Когда вы передаете что-то через границу службы, оно передается по значению, а не по ссылке, поэтому любые изменения, сделанные на сервере, не будут распространяться на объект, который вы передали от клиента. Таким образом, вы захотите вернуть измененный объект обратно клиенту. Если вам также нужно вернуть int, вы можете создать класс-оболочку, который может содержать как int, так и измененный объект.

0 голосов
/ 01 сентября 2009

@ jodogger, может быть, я что-то упустил, но если сервис возвращает int, он, конечно, не изменит ваш объект.

Проблема в том, что ваш объект на самом деле никогда не совершает двустороннюю поездку на сервер. Из-за отключенной природы WCF вы должны передавать значения byval, а не byref.

Если вам нужно изменить значения в службе WCF, вам нужно сделать что-то вроде этого:

myObject = WCFService.MethodName(myObject);

На самом деле это не тот же самый объект, но вы забьете свой старый объект новыми значениями этого объекта.

Обратите внимание, что возвращаемый объект необходимо будет создать в разделе DataContract интерфейса, а также в самой реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...