Por que o ICollection genérico não implementa o IReadOnlyCollection no .NET 4.5?

No .NET 4.5 / C # 5,IReadOnlyCollection<T> é declarado com umCount propriedade:

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

Eu estou querendo saber, não teria feito sentido paraICollection<T> para implementar oIReadOnlyCollection<T> interface também:

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

Isso significaria que as classes implementandoICollection<T> Teria implementado automaticamenteIReadOnlyCollection<T>. Isso parece razoável para mim.

oICollection<T> abstração pode ser vista como uma extensão doIReadOnlyCollection<T> abstração. Observe queList<T>, por exemplo, implementa tantoICollection<T> eIReadOnlyCollection<T>.

No entanto, não foi concebido dessa forma.

O que estou perdendo aqui? Por que a implementação atual foi escolhida?

ATUALIZAR

Eu estou procurando uma resposta que usaRaciocínio de design orientado a objetos para explicar por que:

Uma classe concreta comoList<T> implementando ambosIReadOnlyCollection<T> e ICollection<T>

é um design melhor que:

ICollection<T> implementandoIReadOnlyCollection<T> diretamente

Observe também que esta é essencialmente a mesma pergunta que:

Por que nãoIList<T> implementoIReadOnlyList<T>?Por que nãoIDictionary<T> implementoIReadOnlyDictionary<T>?

questionAnswers(6)

yourAnswerToTheQuestion