読み取り専用コレクションのコードを見ると、「Add」メソッドはありませんが、代わりにICollection<T>.Add(T Value)
メソッドを定義しています(明示的なインターフェイスの実装)。
ReadOnlyDictionaryクラスで同様のことをしたとき、 FxCop10は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:
public class ReadOnlyCollection<T> : ICollection<T>
{
void ICollection<T>.Add(T item) { //Throw Exception }
}
それで、これは誤検知ですか?Microsoftのベースコードは悪いですか?何が得られますか?