Warum implementiert die generische ICollection IReadOnlyCollection in .NET 4.5 nicht?

In .NET 4.5 / C # 5IReadOnlyCollection<T> wird mit einem deklariertCount Eigentum:

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

Ich frage mich, hätte das keinen Sinn ergeben?ICollection<T> um das umzusetzenIReadOnlyCollection<T> Schnittstelle auch:

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

Dies hätte bedeutet, dass Klassen implementierenICollection<T> hätte automatisch implementiertIReadOnlyCollection<T>. Das klingt für mich vernünftig.

DasICollection<T> Abstraktion kann als Erweiterung desIReadOnlyCollection<T> Abstraktion. Beachten Sie, dassList<T>implementiert zum Beispiel beideICollection<T> undIReadOnlyCollection<T>.

Es wurde jedoch nicht so konzipiert.

Was vermisse ich hier? Warum wurde stattdessen die aktuelle Implementierung gewählt?

AKTUALISIEREN

Ich suche nach einer Antwort, die verwendetObjektorientiertes Design um zu erklären warum:

Eine konkrete Klasse wieList<T> beide implementierenIReadOnlyCollection<T> und ICollection<T>

ist ein besseres Design als:

ICollection<T> implementierenIReadOnlyCollection<T> direkt

Bitte beachten Sie auch, dass dies im Wesentlichen die gleiche Frage ist wie:

Warum nicht?IList<T> implementierenIReadOnlyList<T>?Warum nicht?IDictionary<T> implementierenIReadOnlyDictionary<T>?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage