我有一个Web服务,在调用时,会以多态方式返回包含List的Result对象。但是,当我在客户端应用程序中添加引用时,公共字段将成为客户端应用程序中的Country数组。如何将客户端应用程序中的字段更改为List?
public Result GetCountryList()
{
List<Country> countries = GrabCountryList();
Result result = new Result();
result.theResult = countries;
}
这是公共财产
public object theResult
{
get {return _theResult; }
set {_theResult = value;}
}
<小时/> 来自Mehmet Aras的接受的答案:
右键单击服务引用,然后选择“配置引用”。在Collection type下,选择System.Collection.Generic.List。更新服务参考,它应该是好的。
感谢Matt Hamilton提出的从阵列创建新列表的建议。
答案 0 :(得分:9)
我相信你必须自己重建清单。 Web服务应该与语言无关,并且由于List<T>
是.NET框架的一部分,因此它不能成为序列化返回值的一部分。
重建列表非常简单:
var countries = new List<Country>(result.theResult);
答案 1 :(得分:8)
如果您使用的是VS2008,则服务参考设置表单上有一个高级按钮,可用于控制客户端代理生成。在那里你可以选择集合类型,列表就在其中。