列表<Country>跨Web服务变为Country []

pkc*_*iss 3 .net c# web-services

我有一个Web服务,在调用时,返回一个多态包含List的Result对象.但是,当我在客户端应用程序中添加引用时,公共字段将成为客户端应用程序中的Country数组.如何将客户端应用程序中的字段更改为List?

public Result GetCountryList()
{
    List<Country> countries = GrabCountryList();
    Result result = new Result();
    result.theResult = countries;
}
Run Code Online (Sandbox Code Playgroud)

这是公共财产

public object theResult
{
     get {return _theResult; }
     set {_theResult = value;}
}
Run Code Online (Sandbox Code Playgroud)


接受 Mehmet Aras的回答:

右键单击服务引用,然后选择"配置引用".在Collection type下,选择System.Collection.Generic.List.更新服务参考,应该是好的.

感谢Matt Hamilton提出的从阵列创建新列表的建议.

Mat*_*ton 9

我相信你必须自己重建清单.Web服务应该是与语言无关的,并且由于它List<T>是.NET框架的一部分,因此它不能成为序列化返回值的一部分.

重建列表非常简单:

var countries = new List<Country>(result.theResult);
Run Code Online (Sandbox Code Playgroud)


Meh*_*ras 8

如果您使用的是VS2008,则服务参考设置表单上有一个高级按钮,可用于控制客户端代理生成.在那里你可以选择集合类型,列表就在其中.