首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么WCF像我预期的那样返回myObject[]而不是List<T>?

为什么WCF像我预期的那样返回myObject[]而不是List<T>?
EN

Stack Overflow用户
提问于 2009-01-29 20:56:03
回答 4查看 30.2K关注 0票数 63

我从我的WCF方法返回一个列表。在我的客户机代码中,它的返回类型显示为MyObject[]。我必须使用MyObject[]、IList或IEnumerable...

代码语言:javascript
复制
WCFClient myClient = new WCFClient();

    MyObject[] list = myClient.GetMyStuff();
or
    IList<MyObject> list = myClient.GetMyStuff();
or
    IEnumerable<MyObject> list = myClient.GetMyStuff();

我要做的就是把这个集合绑定到一个网格上。给我返回的集合赋值最好的对象是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-29 21:03:55

您可以通过在添加引用时单击高级按钮来指定要使用通用列表而不是数组,也可以右键单击服务引用并选择configure对其进行适当的更改。

原因是WCF将泛型列表序列化为数组,以便通过网络发送。配置只是告诉svcutil创建一个代理,将它们转换回一个通用列表,以方便您使用。

票数 83
EN

Stack Overflow用户

发布于 2009-01-29 21:00:14

当您使用svcutil.exe创建客户端代码时,您需要告诉它如何解析某些对它不可用的引用。

这就是如何为List<T>做这件事

代码语言:javascript
复制
svcutil /o:YourService.cs /ct:System.Collections.Generic.List`1 http://example.com/mex
票数 13
EN

Stack Overflow用户

发布于 2009-01-29 21:16:16

Stever B是正确的。你可能希望允许一个.NET客户端连接到你的组件。数组是可互操作的。通用.NET列表则不是。

但是,非常欢迎您创建自己的代理类,它将把数组转换回列表或任何您想要的东西。手动创建自己的代理的好处是,您可以完全控制它们所做的事情。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/493376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档