为什么将List公开被认为是不好的?
为什么认为暴露List
在设计一个将被数千或数百万开发人员使用的API时,暴露List
尽管有些FxCop规则是针对框架设计准则的,可能不适用于某些项目,但即使是为小团队设计的库,遵循这些规则也会有益处。你有没有告诉过5个开发人员,他们需要修改他们的项目,因为你需要对库进行重大更改(比如观察变化)?你的团队中的开发人员是否曾经做出你意想不到的事情,比如修改你打算只读的列表属性的内容?
如果某个准则在你的情况下没有意义,可以在FxCop项目中禁用它,但是请仔细审查准则的原因。
解决方法:根据具体情况禁用不适用的FxCop规则,但要仔细审查准则原因。
在编程中,我们经常会使用List
首先,List
其次,List
解决这个问题的方法很简单:使用IList
此外,当适用时,还可以考虑将某些集合暴露为IEnumerable
然而,对于Web服务来说,方法无法返回或接受接口类型。这是一个问题,因为SOAP Web服务会将IList
在使用IList
需要注意的是,使用IList时要小心。Array也实现了IList接口,并且在调用Add和Remove方法时会抛出异常。这可能会令人困惑,因为很多人不会预料到这一点。
为了避免暴露List