Проблема с WCF DataContract

#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> . Проблема решена. Тем не менее, спасибо!