#wcf #datacontract
#wcf #datacontract
Вопрос:
У меня есть решение Visual Studio 2010 с 3 проектами: Shared, которое содержит один класс с именем ServiceResult
. Класс приписывается с помощью DataContract(IsReference=true)
, и каждое свойство приписывается с помощью DataMember
. Следующий проект — это служба WCF с методом, который возвращает ServiceResult
тип. Третий проект — это приложение командной строки со ссылкой на службу WCF. Здесь также есть ссылка на общий проект.
Что бы я ни делал, если DataContract
атрибут находится в ServiceResult
классе, я не получаю свой прокси-клиент в консольном приложении. Как только я заменяю DataContract
атрибут на Serializable
attribute и обновляю свою ссылку на службу, я получаю свой прокси-клиент в приложении командной строки.
Я хотел бы, чтобы этому классу был присвоен DataContract
атрибут, поскольку я хочу воспользоваться IsReference
свойством для поддержания ссылок на объекты.
Кто-нибудь видел что-либо подобное раньше, и если да, то как вы это решили?
Спасибо!
Я должен добавить, что класс ServiceResult является универсальным типом:
[DataContract(IsReference=true)]
public class ServiceReferences<TReturn>{...}
Комментарии:
1. Как вы используете этот контракт в своей службе или операции?
Ответ №1:
На самом деле, он, я не понимал, что я не могу сериализовать универсальные типы, в то же время ссылаясь на тот же пользовательский тип на стороне клиента. Клиентский прокси-сервер хотел использовать тип с именем ServiceResultOfInt , но клиентский код использовал ServiceResult<int> . Проблема решена. Тем не менее, спасибо!