如果您查看只读集合的代码,它没有“添加”方法,而是定义了该ICollection<T>.Add(T Value)
方法(显式接口实现)。
当我对我的 ReadOnlyDictionary 类做了类似的事情时,FxCop 10 抱怨说我破坏了CA1033。
public class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
//CA1033 ERROR
void IDictionary<TKey, TValue>.Add(TKey, TValue) { //Throw Exception }
}
public class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
//NO CA1033 ERROR
Add(TKey, TValue) { //Throw Exception }
}
只读集合类:
public class ReadOnlyCollection<T> : ICollection<T>
{
void ICollection<T>.Add(T item) { //Throw Exception }
}
那么,这是误报吗?微软的基础代码不好吗?是什么赋予了?