我有一个带有Property<T> DataContract
的WCF服务(使用KnownType等等),但在Silverlight客户端中我只有PropertyOfint, PropertyOfstring, ...
种类型,但我在Silverlight中也需要一个泛型类型。怎么样?
答案 0 :(得分:1)
soap标准不支持泛型的概念,因此不直接在WCF中支持。但是,您可以通过在客户端和服务之间共享ServiceContract DLL来实现this support if you control both the client and the WCF service。确保这确实是您想要的,因为不是推荐的SOA最佳实践。
此处is an article描述了此方法的工作原理。通过共享ServiceContract(不服务实现DLL)并使用WCF ChannelFactory类,您不需要生成代理类,因为ChannelFactory类将动态地为您执行此操作。 ServiceContract程序集还需要包含所有引用的DataMember标记类,这是此方法的主要缺陷,因为它们包含的任何逻辑也将被共享。只要DataMember类只是数据传输对象(DTO),那么您就不会完全折磨SOA内容。本文还解释了如何使用WCF ClientBase类执行此操作。