Сотрудник спросил меня, как добавить диапазон в коллекцию. У него есть класс, который наследуется от Collection<T>
. Там свойство get-only этого типа, которое уже содержит некоторые элементы. Он хочет добавить элементы в другую коллекцию к коллекции свойств. Как он может сделать это в стиле С# 3? (Обратите внимание на ограничение свойства get-only, которое предотвращает такие решения, как объединение и переназначение.)
Конечно, foreach с Property. Добавить будет работать. Но a List<T>
-style AddRange был бы намного более изящным.
Достаточно легко написать метод расширения:
public static class CollectionHelpers
{
public static void AddRange<T>(this ICollection<T> destination,
IEnumerable<T> source)
{
foreach (T item in source)
{
destination.Add(item);
}
}
}
Но у меня такое чувство, что я изобретаю колесо. Я не нашел ничего подобного в System.Linq
или morelinq.
Плохой дизайн? Просто позвоните Добавить? Отсутствует очевидное?