IEnumerable&Good Practices(&WCF)

Use*_*ser 14 .net c# ienumerable wcf

IEnumerable在您不需要实际添加删除内容但仅枚举它们时,使用应用程序范围是一个好习惯吗?

侧问题:你曾经有返回任何问题,IEnumerable<T>从WCF服务?这会给客户端应用程序带来问题吗?毕竟,我认为这将序列化为一个数组.

Joe*_*Joe 13

IEnumerable<T>当我想向调用者提示实现可能使用延迟评估时,我倾向于只返回.否则,我通常会返回IList<T>或者ICollection<T>实现,ReadOnlyCollection<T>如果结果应该是readonly.

延迟评估可能是一个重要的考虑因素:如果您的实现可以抛出异常,则在调用者开始枚举结果之前不会抛出此异常.通过返回IList<T>或者ICollection<T>,您可以保证在调用方法时抛出任何异常.

对于WCF方法,IEnumerable<T>从使用延迟评估的方法返回意味着在序列化响应之前可能不会抛出任何异常 - 从而减少了在服务器端处理它的机会.


Pet*_*ter 1

我没有任何良好实践来源,但我经常倾向于依赖 List 来收集我的集合,它实现了 IEnumerable 但我确实将其作为 List 而不是 IEnumerable 传递,如果我需要它只读,我宁愿通过只读集合..