¿Por qué ICollection genérico no implementa IReadOnlyCollection en .NET 4.5?

En .NET 4.5 / C # 5,IReadOnlyCollection<T> se declara con unCount propiedad:

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

Me pregunto, ¿no habría tenido sentido paraICollection<T> para implementar elIReadOnlyCollection<T> interfaz también:

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

Esto hubiera significado que las clases implementadasICollection<T> habría implementado automáticamenteIReadOnlyCollection<T>. Esto me suena razonable.

losICollection<T> La abstracción se puede ver como una extensión de laIReadOnlyCollection<T> abstracción. Tenga en cuenta queList<T>, por ejemplo, implementa tantoICollection<T> yIReadOnlyCollection<T>.

Sin embargo, no ha sido diseñado de esa manera.

¿Que me estoy perdiendo aqui? ¿Por qué habría sido elegida la implementación actual en su lugar?

ACTUALIZAR

Estoy buscando una respuesta que useRazonamiento orientado a objetos de diseño. para explicar por qué:

Una clase concreta comoList<T> implementando ambosIReadOnlyCollection<T> y ICollection<T>

Es un diseño mejor que:

ICollection<T> implementarIReadOnlyCollection<T> directamente

También tenga en cuenta que esta es esencialmente la misma pregunta que:

Porque noIList<T> implementarIReadOnlyList<T>?Porque noIDictionary<T> implementarIReadOnlyDictionary<T>?

Respuestas a la pregunta(6)

Su respuesta a la pregunta