Si vous souhaitez obtenir les valeurs de toutes les constantes d'un type spécifique, à partir du type cible, voici une méthode d'extension (étendant certaines des réponses sur cette page) :
public static class TypeUtilities
{
public static List GetAllPublicConstantValues(this Type type)
{
return type
.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)
.Where(fi => fi.IsLiteral && !fi.IsInitOnly && fi.FieldType == typeof(T))
.Select(x => (T)x.GetRawConstantValue())
.ToList();
}
}
Ensuite, pour une classe comme celle-ci
static class MyFruitKeys
{
public const string Apple = "apple";
public const string Plum = "plum";
public const string Peach = "peach";
public const int WillNotBeIncluded = -1;
}
Vous pouvez obtenir les valeurs constantes de type string
de cette manière :
List result = typeof(MyFruitKeys).GetAllPublicConstantValues();
//result[0] == "apple"
//result[1] == "plum"
//result[2] == "peach"
5 votes
weblogs.asp.net/whaggard/archive/2003/02/20/2708.aspx