Веб-сервис: хотите вернуть сериализуемый словарь, но он показывает DataSet - PullRequest
3 голосов
/ 03 апреля 2011

Я хочу вернуть коллекцию словарей из веб-сервиса. Поскольку мы не могли напрямую вернуть тип словаря из веб-службы, я создал сериализуемый словарь, как описано в этой ссылке

Это нормально, и я мог бы вернуть коллекцию в формате XML ниже:

<?xml version="1.0" encoding="utf-8"?>
<SerializableDictionaryOfStringString xmlns="http://tempuri.org/">
  <Item>
    <Key>
      <string xmlns="">k1</string>
    </Key>
    <Value>
      <string xmlns="">abcdef</string>
    </Value>

  </Item>
  <Item>
    <Key>
      <string xmlns="">k2</string>
    </Key>
    <Value>
      <string xmlns="">xyz</string>
    </Value>

  </Item>
</SerializableDictionaryOfStringString>

Однако проблема возникает при использовании этого веб-сервиса. Вместо возвращаемого типа SerializableDictionary мой метод веб-службы показывает возвращаемый тип данных как DataSet. Я не знаю, как обрабатывать возвращаемые данные и использовать их, потому что, хотя они возвращаются как набор данных, на самом деле это не набор данных, и я ничего не мог с этим поделать, например, привязка к gridview, ds.tables [0] и т. Д. ...

Итак, как я могу манипулировать возвращаемыми данными из веб-службы?

1 Ответ

6 голосов
/ 03 апреля 2011

Словарь - не самый логичный выбор для DTO (Data Transfer Object).

Сделайте шаг назад, что вы хотите вернуть с сервера на потребителя?

Я думаю, что это просто

class MyDTO { public string Key {get; set; } public string Value {get; set; } }

public List<MyDTO> Servermethod() { ... }

Добавьте атрибуты [WebMethod], [Serializable] или [OperationContract], [DataContract] при необходимости

И тогда это зависит от клиента, чтобы создать словарь из списка, это удобно.

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