Un collègue m'a demandé aujourd'hui comment ajouter une plage à une collection. Il a une classe qui hérite de la Collection<T>. Il y a une seule propriété de ce type qui contient déjà quelques éléments. Il veut ajouter des éléments dans une autre collection de la collection de propriété. Comment peut-il le faire en C#3-amicale de la mode? (Note de la contrainte sur la seule propriété, ce qui empêche des solutions comme faire de l'Union et de réaffectation.)
Bien sûr, un foreach avec la Propriété.Ajoutez de travail. Mais une Liste<T>style AddRange serait beaucoup plus élégant.
Il est assez facile d'écrire une extension de la méthode:
public static class CollectionHelpers
{
public static void AddRange<T>(this ICollection<T> destination,
IEnumerable<T> source)
{
foreach (T item in source)
{
destination.Add(item);
}
}
}
Mais j'ai le sentiment que je suis en train de réinventer la roue. Je n'ai rien trouvé de semblable dans le Système.Linq ou morelinq.
Mauvaise conception? Appelez Simplement Ajouter? Manque évident?