Dlaczego ogólne ICollection nie implementuje IReadOnlyCollection w .NET 4.5?

W .NET 4.5 / C # 5,IReadOnlyCollection<T>&nbsp;jest zadeklarowany za pomocą aCount&nbsp;własność:

public interface IReadOnlyCollection<out T> : IEnumerable<T>, IEnumerable
{
    int Count { get; }
}

Zastanawiam się, czy nie miałoby to sensuICollection<T>&nbsp;wdrożyćIReadOnlyCollection<T>&nbsp;interfejs:

public interface ICollection<T> : IEnumerable<T>, IEnumerable, *IReadOnlyCollection<T>*

Oznaczałoby to, że klasy implementująICollection<T>&nbsp;zaimplementowałoby się automatycznieIReadOnlyCollection<T>. To brzmi dla mnie rozsądnie.

TheICollection<T>&nbsp;abstrakcja może być postrzegana jako przedłużenieIReadOnlyCollection<T>&nbsp;abstrakcja. Zauważ, żeList<T>na przykład implementuje obaICollection<T>&nbsp;iIReadOnlyCollection<T>.

Jednak nie został zaprojektowany w ten sposób.

Czego mi tu brakuje? Dlaczego zamiast tego wybrano by bieżącą implementację?

AKTUALIZACJA

Szukam odpowiedzi, która używaRozumowanie projektowe zorientowane obiektowo&nbsp;wyjaśnić, dlaczego:

Konkretna klasa, taka jakList<T>&nbsp;wdrożenie obuIReadOnlyCollection<T> i ICollection<T>

to lepszy projekt niż:

ICollection<T>&nbsp;realizowanieIReadOnlyCollection<T>&nbsp;bezpośrednio

Należy również pamiętać, że jest to zasadniczo to samo pytanie, co:

Dlaczego nieIList<T>&nbsp;wprowadzić w życieIReadOnlyList<T>?Dlaczego nieIDictionary<T>&nbsp;wprowadzić w życieIReadOnlyDictionary<T>?