Web服务:想要返回Serializable Dictionary但它显示DataSet

时间:2011-04-03 14:23:26

标签: c# web-services serialization dictionary

我想从webservice返回Dictionary集合。由于我们无法直接从Web服务返回Dictionary Type,因此我按照this link

中的描述制作了Serializable Dictionary

很好,我可以将集合作为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>

但是,使用此Web服务时会出现此问题。我的Web服务方法不是SerializableDictionary返回类型,而是将返回数据类型显示为DataSet。我不知道如何处理返回数据并使用,因为虽然它作为数据集返回,但它实际上不是数据集,我无法对它做任何事情,例如绑定到gridview,ds.tables [0]等。 ...

那么,我如何操作来自webservice的返回数据呢?

1 个答案:

答案 0 :(得分:6)

字典不是DTO(数据传输对象)最合理的选择。

退后一步,您希望从服务器返回消费者?

我认为这只是

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

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

根据需要添加[WebMethod][Serializable][OperationContract][DataContract]属性。

然后由客户端从列表中创建一个字典是方便的。