Веб-сервис, ссылающийся на класс со свойством типа Icon - PullRequest
1 голос
/ 28 февраля 2011

в моем веб-сервисе я ссылаюсь на dll с классом, который содержит свойство типа Icon (среди прочих типа string и DateTime).При создании ссылки на службу в моем проекте UnitTest я получаю следующую ошибку:

Ошибка:

Тип ISerializable с именем контракта данных 'Icon' в пространстве имен 'http://schemas.datacontract.org/2004/07/System.Drawing' не может бытьимпортирован.Пространство имен контракта данных нельзя настроить для типов ISerializable, а сгенерированное пространство имен KoenHoefman.ExchangeRate.WS.NUnit.QueryService не соответствует требуемому пространству имен CLR System.Drawing.Проверьте, сопоставлено ли требуемое пространство имен с другим пространством имен контракта данных, и рассмотрите возможность его явного сопоставления с использованием коллекции пространств имен.

У меня есть доступ к исходному коду этой библиотеки DLL, поэтому можновнести некоторые изменения, но эти изменения должны быть очень минимизированы.Класс помечен атрибутом Serializable, который, вероятно, выдает предыдущую ошибку.При удалении этого атрибута я получил еще одну ошибку, в которой говорилось, что я должен пометить класс с помощью DataContractAttribute, а члены - с помощью DataMemberAttribute.

Теперь мне кажется, что это большое изменение, поскольку этот класс редко используется в веб-сервисе.(только в этот раз).Я еще не пробовал это, но мне было интересно, есть ли другое решение моей проблемы.

Спасибо.

1 Ответ

1 голос
/ 28 февраля 2011

Я предлагаю создать другой класс для переноса данных - этот класс может обернуться вокруг проблемного класса и предоставить необходимые свойства - вы должны аннотировать этот класс с помощью DataContractAttribute & DataMemberAttribute - это всегда хорошая идея явно пометить ваш контракт на обслуживание .

Что касается значка, вам необходимо решить, нужно ли вам передавать / предоставлять информацию о значках через веб-сервис. Если да, то вы можете предоставить свойство типа byte[] (или строку в кодировке base64) для передачи данных значка.

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