Атрибут отображения WCF - PullRequest
       7

Атрибут отображения WCF

1 голос
/ 22 февраля 2012

У меня есть DTO, для которого я украсил свойства [Display (Name = "My Display Name")].

Я использую службы WCF, но атрибут не работает.При проверке моей сервисной ссылки сгенерированная сторона клиента DTO не имеет примененного атрибута.

Может, я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Класс и объект, который вы создали на стороне сервера не существует на стороне клиента. Когда вы используете WCF, вы сериализуете экземпляр класса в данные (обычно XML, но он также может быть двоичным в зависимости от вашей привязки), отправляете его через Интернет, а затем десериализуете в экземпляр аналогичный класс на стороне клиента. Этот подобный класс обычно создается ссылкой на службу на основе WSDL службы.

Вот почему закрытые поля в вашем классе на стороне сервера не появляются в вашем классе на стороне клиента. Если вы хотите, чтобы атрибуты были доступны на стороне клиента, вам придется вручную добавить их на стороне клиента.

Как уже было сказано ... если вы управляете как сервером, так и клиентом, вы можете использовать приемы, чтобы гарантировать, что вы используете один и тот же класс с обеих сторон. Самое простое - поместить все ваши классы DataContract в отдельную сборку и ссылаться на них как с сервера, так и с клиента. Если вы используете Service Reference для генерации прокси на стороне клиента, обязательно отметьте «Повторное использование типов в ссылочных сборках» при генерации прокси.

0 голосов
/ 22 февраля 2012

Вы не можете.Атрибуты не сериализуются с DTO в сообщении SOAP.Это потому, что атрибуты не являются независимыми от платформы.Подумайте, что ваш сервис предназначен для клиентов, которым не нужны реализации .NET.

...