MyType <t> DataContract位于Silverlight客户端MyTypeOfT </t>中

时间:2011-05-11 14:01:58

标签: c# silverlight wcf generics datacontract

我有一个带有Property<T> DataContract的WCF服务(使用KnownType等等),但在Silverlight客户端中我只有PropertyOfint, PropertyOfstring, ...种类型,但我在Silverlight中也需要一个泛型类型。怎么样?

1 个答案:

答案 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类执行此操作。