Если вы посмотрите на код для коллекции только для чтения, у него нет метода «Добавить», но вместо этого определяется метод 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 }
}
ReadOnlyCollectionClass:
* * 1010
Итак, это ложный положительный результат? Базовый код Microsoft плох? Что дает?