Почему универсальная ICollection не реализует IReadOnlyCollection в .NET 4.5?
В .NET 4.5 / C # 5,IReadOnlyCollection
объявлен сCount
имущество:
public interface IReadOnlyCollection : IEnumerable, IEnumerable
{
int Count { get; }
}
Мне интересно, нет это имело смысл дляICollection
реализоватьIReadOnlyCollection
интерфейс также:
public interface ICollection : IEnumerable, IEnumerable, *IReadOnlyCollection*
Это было бымы подразумевали, что классы реализуютICollection
было бы'автоматическиIReadOnlyCollection
, Это звучит разумно для меня.
ICollection
абстракция может рассматриваться как продолжениеIReadOnlyCollection
абстракция. Обратите внимание, чтоList
например, реализует обаICollection
а также .IReadOnlyCollection
Однако это не было разработано таким образом.
Что мне здесь не хватает? Почему вместо этого была выбрана текущая реализация?
UPDATEI»
ищу ответ, который используетОбъектно-ориентированное проектное обоснование объяснить почему:
Конкретный класс, такой какList
реализуя обаIReadOnlyCollection
а также ICollection
это лучший дизайн, чем:
ICollection
реализацииIReadOnlyCollection
непосредственноТакже обратите внимание, что это по сути тот же вопрос, что и:
Почему неIList
воплощать в жизнь ?IReadOnlyList
Почему неIDictionary
воплощать в жизнь ?IReadOnlyDictionary