Вы должны реализовать IList<T>
для доступа к элементам коллекции по их индексу. IList<T>
наследуется от ICollection<T>
, IEnumerable<T>
и IEnumerable
, так что вы все равно получите их.
Для более простой коллекции без доступа к элементу по индексу вы реализуете ICollection<T>
, который поставляется с IEnumerable<T>
и IEnumerable
через наследование.
Вы можете дополнительно реализовать IReadOnlyList<T>
(или IReadOnlyCollection<T>
соответственно), но в этом обычно нет необходимости.
Вам также следует изучить наследование от System.Collections.ObjectModel.Collection<T>
, что является рекомендуемым способом, потому что обычные стандартные реализации интерфейса уже сделаны для вас, и вы можете сосредоточиться на деталях, которые делают вашу коллекцию особенной.