Intern erzeugt die Methode GetItems
Listing 2
private static EnumItemGetDescriptionInternal (object val) { // Uses reflection to access the Field member representing // the specified value in the underlying enumerated type. var field = val.GetType().GetField(val.ToString()); // Checks whether the Field member has been decorated // with a [Description] attribute. var attributes = (DescriptionAttribute[]) field.GetCustomAttributes( typeof(DescriptionAttribute), false); // Creates the corresponding EnumItem object. var enumItem = new EnumItem { Description = attributes.Length > 0 ? attributes[0].Description : val.ToString(), Value = (T) val }; return enumItem; }
Die Methode GetDescriptionInternal verwendet das vom System bereitgestellte Description-Attribut, um die Werte in einem Aufzählungstyp damit auszustatten. Das Description-Attribut gehört zum Namespace System.ComponentModel. Ich habe mich für diesen nativen Typ entschieden und konnte in diesem Zusammenhang keine Probleme feststellen. Wenn es Ihnen lieber ist, können Sie hier aber auch ein benutzerdefiniertes Attribut verwenden (Listing 3).
Listing 3
public enum MatchStatus : int { [Description("To be played")] ToBePlayed = 0, [Description("Currently played")] BeingCurrentlyPlayed = 1, [Description("Just played")] Completed = 2 }
Die oben gezeigte MatchStatus-Aufzählung bindet der folgende Code an eine Drop-down-Liste, die den Inhalt des Description-Attributs anzeigt und den Ganzzahlwert des Typs zurückgibt:
var data = new MatchStatus().GetItems(); DropDownList1.DataSource = data;
Als Nächstes erfahren Sie, wie Sie einen Wert verarbeiten, der aus diesem datengebundenen Listensteuerelement ausgewählt wurde.