lundi 16 mars 2009

J'ai récemment voulu peupler les données d'un DropDownList ASP.NET avec les éléments contenus dans une énumération. Avec un peu de recherches, j'ai découvert la classe utilitaire Enum permettant d'obtenir des informations intéressantes sur une énumération. J'ai donc codé une méthode pour retourner sous la forme d'un Dictionnary les éléments d'une énumération donnée:


using System;
using System.Collections.Generic;

namespace Util
{
public static class EnumUtils
{
/// <summary>
/// Obtient les éléments composant une énumération
/// </summary>
/// <typeparam name="TEnum">Le type de l'énumération</typeparam>
/// <exception cref="ArgumentException">Lancée si TEnum n'est pas une énumération</exception>
/// <returns>Un dictionnaire avec comme clé la valeur entière d'un élément et comme valeur, son nom</returns>
public static IDictionary<int, string> GetEnumElements<TEnum>()
{

var type = typeof(TEnum);
if (!type.IsEnum)
throw new ArgumentException("Type must be an enum type");

var names = Enum.GetNames(type);
var values = Enum.GetValues(type);

var elements = new Dictionary<int, string>();
for (int i = 0; i < names.Length; ++i)
{
elements.Add((int)values.GetValue(i), names[i]);
}
return elements;
}
}
}

La présence du mot clé var force l'utilisation d'un compilateur respectant la norme 3.0 du langage, mais il suffit de retirer ceci pour permettra la compatibilité avec la version 2.0.

0 commentaires:

Enregistrer un commentaire