AddRange do kolekcji
Współpracownik zapytał mnie dzisiaj, jak dodać zakres do kolekcji. Ma klasę, która dziedziczy zCollection<T>
. Istnieje właściwość typu tylko do pobrania, która zawiera już pewne elementy. Chce dodać przedmioty z innej kolekcji do kolekcji nieruchomości. Jak może to zrobić w sposób przyjazny dla C # 3?(Zwróć uwagę na ograniczenie dotyczące właściwości get-only, które zapobiega rozwiązywaniu takich problemów jak Union i ponowne przypisywanie).
Jasne, foreach z własnością. Dodaj będzie działać. AleList<T>
- styl AddRange byłby znacznie bardziej elegancki.
Łatwo jest napisać metodę rozszerzenia:
public static class CollectionHelpers
{
public static void AddRange<T>(this ICollection<T> destination,
IEnumerable<T> source)
{
foreach (T item in source)
{
destination.Add(item);
}
}
}
Ale mam wrażenie, że zmieniam koło. Nie znalazłem niczego podobnego wSystem.Linq
lubmorelinq.
Zły projekt? Wystarczy zadzwonić? Brakuje rzeczy oczywistych?