Если вы посмотрите на код коллекции, доступной только для чтения, в ней нет метода «Добавить», но вместо этого определяется ICollection
(явная реализация интерфейса).
Когда я сделал что-то подобное с моим классом ReadOnlyDictionary, FxCop 10 пожаловался, что я нарушаю CA1033 .
public class ReadOnlyDictionary : IDictionary
{
//CA1033 ERROR
void IDictionary.Add(TKey, TValue) { //Throw Exception }
}
public class ReadOnlyDictionary : IDictionary
{
//NO CA1033 ERROR
Add(TKey, TValue) { //Throw Exception }
}
ReadOnlyCollectionClass:
public class ReadOnlyCollection : ICollection
{
void ICollection.Add(T item) { //Throw Exception }
}
Итак, это ложно положительный? Базовый код Microsoft плох? Что дает?