哪种列表/集合类型最适合在WCF数据协定中使用?

Jac*_*obE 16 .net wcf datacontract

在定义WCF数据协定时,应该使用哪种类型的集合/列表?

  • 应该是ICollection <T>,IList <T>,T []还是......?
  • 我应该使用接口类型还是具体类型?
  • 有什么权衡需要考虑?

Mar*_*ell 13

注意:我从客户的角度回答这个问题- 即/collectionType:<type>开启svcutil.exe(也可在IDE中使用).

就个人而言,我倾向于保持简单和使用List<T>.如果你要做很多数据绑定,BindingList<T>可能是一个选项,但对于对象属性,它通常是矫枉过正.阵列让生活变得非常艰难......避免它们;-p

请注意,使用.NET 3.5,每个集合类型可用的功能都会模糊,这要归功于扩展方法Enumerable.

通常,Collection<T>当您认为可能要将集合子类化以使用virtual扩展点时,此选项很有用.对于WCF来说,这不是一个真正的选择.

如前所述,IList<T>除非您使用程序集共享,否则使用etc不是一个选项,因为生成的类将无法创建集合.