我想在我的 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/