c# - 如何通过 WCF 服务发送 IList?

标签 c# wcf ilist

我想在我的 WCF 服务中使用 NHibernate,如何通过 WCF 服务发送 IList?

---编辑-------

我可以将 IList 放入一个 object 变量中并发送吗?

最佳答案

试图传递 IList<T>不太适合基于 WCF 的服务。

WCF 在数据契约方面进行讨论,定义服务或客户端期望发送和接收的数据的形状。这些契约必须足够具体,以便序列化程序知道如何将它们转换为 XML、JSON 和其他表示形式。

当你放置一个像IList<T>这样的接口(interface)时在您的服务契约(Contract)中,您没有向序列化程序提供有关数据指定形状的足够信息。你只关心发送IList<T>吗?实现的一部分?您是否对实现该接口(interface)的东西所包含的任何其他有状态数据感兴趣?序列化程序无法知道。

最简单的解决方案是在 WCF 中使用基本数据传输对象。这些是简单的类,仅负责表示要通过媒体传输的信息。这些类只包含具体类型,序列化程序很容易理解。当您想要发送消息时,您可以创建这些对象的实例并用数据填充它们。

对于您的示例,创建 List<T>而不是 IList<T>并将值复制到列表中,然后再将其传递到服务中。一个简单的方法是使用 Enumberable.ToList<T>() 扩展方法。

关于c# - 如何通过 WCF 服务发送 IList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730912/

相关文章:

c# - 将 IList 项添加到特定索引号

asp.net - WCF数据服务jquery跨域问题

c# - 带有 WCF DataService 的 OData - 添加自定义查询选项

c# - 计算非故障任务会导致重新执行每个任务

c# - 告诉 C# 我希望我的数字被视为小数的语法是什么?

c# - 完成学习 WCF 中的教程时出现 EndpointNotFoundException

collections - 实体集合的 IList 与 IEnumerable

c# - Linq 选择 IList

c# - 如何在C#中设置FormattedText背景颜色

c# - C# 中的 CurveZMQ 示例以及为什么在使用 CurveZMQ 时不能将 SetOption() 用于 CURVE_SECRETKEY?