Ich habe eine Liste von Enum
s als IEnumerable<T>
und ich muss für jedes Element in einer Schleife und erhalten ihre Beschreibung wie folgt aus:Konvertieren generic T in System.Enum
IEnumerable<T> values = (T[])Enum.GetValues(typeof(T));
foreach (Enum value in values)
{
String mylist = Common.MyExtensions.getEnumDescription(value);
}
...
public static string getEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
{
return attributes[0].Description;
}
else
return value.ToString();
}
Dies erzeugt einen Fehler am foreach Abschnitt
kann "T" nicht in System.Enum konvertieren.
Ist nicht IEnumerable
eine Liste von System.Enum
an erster Stelle? Welche Art von Besetzung kann den Trick leisten?
Warum nicht verwenden 'T'? –
Sollte Enum nicht T sein? –
Vielleicht ohne Gießen versuchen. So: var Werte = Enum.GetValues (typeof (T)); –