У меня есть ICollection<T>, называемый foos в моем классе, который я хочу открыть как доступный только для чтения (см. этот вопрос). Я вижу, что интерфейс определяет свойство .IsReadOnly, что кажется подходящим... Мой вопрос заключается в следующем: как сделать очевидным для потребителя класса, что foos доступен только для чтения?
Я не хочу полагаться на них, не забывая запросить .IsReadOnly перед тем, как попробовать не реализованный метод, например .Add(). В идеале я хотел бы показать foos как ReadOnlyCollection<T>, но он не реализует IList<T>. Должен ли я раскрывать foo с помощью метода, называемого, например, GetReadOnlyFooCollection, а не через свойство? Если это так, разве это не смущает кого-то, кто тогда ожидает ReadOnlyCollection<T>?
Это С# 2.0, поэтому методы расширения, такие как ToList(), недоступны...