Здравствуйте, Разраб, Вы писали:
Р>В чем смысл скрывать реализацию таким образом? Ведь пользователь легко получит лист при желании?
Обычно авторы кода понимают что пишут и зачем.
Если не нужно скрывать реализацию, то и пиши List, а не ICollection.
Я так делаю, чтобы избавиться от лишних копирований коллекций, тем более, что тут у свойства setter имеется.
Бывает, что данные собираешь в HashSet какой-нибудь, который внезапно тоже ICollection.
Либо можно его напрямую передать и всё будет работать, либо вызывай метод ToList(), перегоняй данные в новый объект и уже с ним работай дальше.
У меня тут больше вопрос к тому, что через setter можно в свойство записать null и это не контролируется.
Либо это допустимое значение и непонятно зачем инициализировать пустой коллекцией, а не оставить null.
Либо null — некорректное значение и так легко можно всё поломать.