Est a t-il un moyen de passer d'un seul élément de type T
pour une méthode qui attend un IEnumerable<T>
paramètre? La langue est le C#, framework version 2.0.
Actuellement, je suis en utilisant une méthode d'aide (c'est .Net 2.0, donc j'ai tout un tas de coulée/projection méthodes d'aide semblable à LINQ), mais cela semble tout simplement ridicule:
public static class IEnumerableExt
{
// usage: IEnumerableExt.FromSingleItem(someObject);
public static IEnumerable<T> FromSingleItem<T>(T item)
{
yield return item;
}
}
Autre façon serait de créer et peupler List<T>
ou Array
et passe à la place de IEnumerable<T>
.
[Edit] Comme une extension de la méthode, il peut être nommé:
public static class IEnumerableExt
{
// usage: someObject.SingleItemAsEnumerable();
public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item)
{
yield return item;
}
}
Suis-je manqué quelque chose?
[Edit2] Nous avons constaté someObject.Yield()
(@Pierre suggéré dans les commentaires ci-dessous) pour être le meilleur nom pour cette extension de la méthode, principalement pour des raisons de concision, si elle est ici, avec le commentaire XML si quelqu'un veut-il simplement de la saisir:
public static class IEnumerableExt
{
/// <summary>
/// Wraps this object instance into an IEnumerable<T>
/// consisting of a single item.
/// </summary>
/// <typeparam name="T"> Type of the wrapped object.</typeparam>
/// <param name="item"> The object to wrap.</param>
/// <returns>
/// An IEnumerable<T> consisting of a single item.
/// </returns>
public static IEnumerable<T> Yield<T>(this T item)
{
yield return item;
}
}