повторяющиеся свойства, созданные для класса с атрибутами «DataContract» и «Serializable» - PullRequest
0 голосов
/ 28 декабря 2010

У меня есть класс с двумя атрибутами: «DataContract» и «Serializable».Этот класс используется в сервисе.Эта услуга используется проектом.Я добавил ссылку на сервис в проекте с помощью функции «добавить ссылку на сервис» в VS (щелкните правой кнопкой мыши по ссылке - Добавить - Ссылка на службу).Всякий раз, когда я добавляю ссылку на службу, в файле Reference.cs ссылки на службу создаются повторяющиеся свойства класса, 1 с атрибутом «DataMember» и другой с атрибутом «Serializable».Это вызывает ошибку сборки.Если я не добавлю атрибут Serializable, ссылка на службу будет работать нормально только с одним набором свойств класса с атрибутом «DataMember».

Есть идеи, почему это происходит, и что мы можем сделать, чтобы этого избежать?Обратите внимание, что оба атрибута являются обязательными для класса, т.е. я не могу удалить ни один из атрибутов.

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

Можете ли вы объяснить, почему вам нужны оба атрибута?

DataContractSerializer отлично работает с атрибутом Serializable.

Но для работы BinaryFormattor необходим атрибут Serializable.

Найдите способ избавиться от атрибута DataContract.

- EDIT -

WCF по умолчанию использует DataContractSerializer для сериализации / десериализации объектов по каналам. Согласно документации MSDN,

@ Класс DataContractSerializer

// You must apply a DataContractAttribute or SerializableAttribute
// to a class to have it serialized by the DataContractSerializer.

Итак, чтобы WCF работал, вы можете избавиться от DataContract s.

0 голосов
/ 04 января 2011

@ Samar Лучшим способом было бы использовать только атрибут DataContract, поскольку он внутренне заставляет атрибут Serializable войти в изображение (по умолчанию).

...