Which list/collection type is best to use in a WCF data contract?
定义WCF数据协定时,应将哪种类型用于集合/列表?
- 如果是ICollection
,我是说,还是……? - 我应该使用接口类型还是具体类型?
- 有哪些权衡需要考虑?
注:我是从客户的角度回答这个问题的,也就是说,
就个人而言,我倾向于保持简单并使用
请注意,对于.NET 3.5,由于
通常,当您认为可能要将集合子类化以使用
如前所述,除非使用程序集共享,否则使用
无法在DataContract中使用接口类型,因为序列化程序无法处理接口类型属性。
您可以使用具体类型,例如myclass[]或list
除了不能使用接口类型之外,使用哪种集合类型也不重要。您服务的客户将永远看不到它们。
记住,Web服务以WSDL或MEX的形式向客户机提供服务的描述j。在WSDL的情况下,客户机将接收一个描述要发送和接收的消息的XML模式。在集合的情况下,客户机只会看到一个maxOccurs="unbounded"的元素,而不是maxOccurs="1"的元素。客户机可以将其解释为数组、列表或其他。无论您从服务中返回哪个集合,客户机都将看到maxoccurs="unbounded",并按照自己的喜好对其进行解释。
唯一的例外是返回某种类型的字典,我不知道它是如何工作的。