FxCop 在规则中规定,通用列表不应暴露给外界。
但我不明白为什么以及什么是通用列表的替代品?
参考:http: //msdn.microsoft.com/en-in/library/ms182142%28en-us%29.aspx
FxCop 在规则中规定,通用列表不应暴露给外界。
但我不明白为什么以及什么是通用列表的替代品?
参考:http: //msdn.microsoft.com/en-in/library/ms182142%28en-us%29.aspx
原因是具体的使用List<T>
意味着实现细节,并且你意味着公开一些更抽象的东西,例如IEnumerable<T>
or ICollection<T>
,它只代表你想要公开的功能(例如可枚举、可变和/或可转位)。这使您可以灵活地在以后更改实现。
在实践中,此警告通常通过返回IList<T>
而不是 来解决List<T>
,但其想法是提示您思考“我实际上需要什么功能来保证我的调用者?” 例如,也许我应该返回或者因为我不希望我的调用者弄乱返回的集合。IEnumerable<T>
ReadOnlyCollection<T>
始终公开对象层次结构中适合您的场景的最低基类/接口。例如,如果此属性的使用者仅对其进行迭代,请使用IEnumerable(Of T)
. 通过List<T>
让客户端代码访问您的类的实现细节,您正在破坏封装。
通用列表是一种 .NET 结构,但 Web 服务通常旨在与其他框架进行互操作。