通过WCF服务序列化通用类型
我有一个C#类定义如下:
public class GenericItem { public List Items { get; set; } public DateTime TimeStamp { get; set; } }
我在我的服务器上创建了这个类的实例。 然后我尝试通过WCF服务传递它,如下所示:
[OperationContract] public GenericItem GetResult() { GenericItem result = BuildGenericItem(); return result; }
在这一点上,一切都很好。 当我在Silverlight应用程序中“更新服务引用”重新编译时,我收到编译时错误,类似于以下内容:
MyNamespace.GenericItemOfMyCustomType [extra chars]不包含’GetEnumerator’的公共定义
我不知道为什么:
- 额外的字符出现了。 每次我更新服务引用时似乎都会改变。
- 如何实际解决这个问题。
我究竟做错了什么?
Sleiman是正确的,但是可以使用本文所述的Bounded Generics,你可以实现你想要的。 这允许您在服务中创建generics类型并公开它。 但是,消费者不会将其视为通用,因为在服务操作中指定了类型。
您无法定义依赖于generics类型参数的WCF合同。 generics特定于.NET,使用它们会违反WCF的面向服务的特性。 但是,数据协定可以包含集合作为数据成员,因为WCF为集合提供专用的编组规则。
正如sleiman指出的那样,SOAP中不支持generics。
WCF和generics – > http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/79585667-6b97-4ce4-93fa-3a4dcc7a9b86
相关问题 – > WCF。 服务通用方法
您可以在客户端使用以下内容,而不是使用servicereference:
var myBinding = new BasicHttpBinding(); var myEndpoint = new EndpointAddress(""); var myChannelFactory = new ChannelFactory(myBinding, myEndpoint); IService gks = myChannelFactory.CreateChannel();
适用于generics。
- WCF:MessageContract,DataContract ……困惑?
- SOA问题:公开实体
- 使用WS-Security UsernameToken PasswordDigest身份validation方案的WCF客户端使用Axis 2 Web服务时出错
- 为什么AspNetCompatibilityRequirementsMode.Allowed修复此错误?
- 禁用WCF JSON服务中的类型提示
- Silverlight和WCF:NotFound错误!
- EntityFramework.dll中发生’System.Data.Entity.Infrastructure.DbUpdateException’
- 无法处理消息,因为内容类型为’application / json; charset = utf-8’不是预期的类型’text / xml; 字符集= UTF-8′
- WPF API可以安全地用在WCF服务中吗?