Wie konvertiere ich die folgende Aufzählung in eine Liste von Zeichenfolgen?
[Flags]
public enum DataSourceTypes
{
None = 0,
Grid = 1,
ExcelFile = 2,
ODBC = 4
};
Ich konnte diese genaue Frage nicht finden, diese Aufzählung nach Liste ist die nächste, aber ich möchte speziell List<string>
Verwenden Sie die statische Methode von Enum
, GetNames
. Es gibt ein string[]
, wie so:
Enum.GetNames(typeof(DataSourceTypes))
Wenn Sie eine Methode erstellen möchten, die dies nur für einen Typ von enum
ausführt und dieses Array auch in ein List
konvertiert, können Sie Folgendes schreiben:
public List<string> GetDataSourceTypes()
{
return Enum.GetNames(typeof(DataSourceTypes)).ToList();
}
Ich möchte eine weitere Lösung hinzufügen: In meinem Fall muss ich eine Enum-Gruppe in Listenelementen mit Dropdown-Schaltflächen verwenden. Sie haben also möglicherweise Platz, d. H. Es werden benutzerfreundlichere Beschreibungen benötigt:
public enum CancelReasonsEnum
{
[Description("In Rush")]
InRush,
[Description("Need more coffee")]
NeedMoreCoffee,
[Description("Call me back in 5 minutes!")]
In5Minutes
}
In einer Hilfsklasse (HelperMethods) habe ich folgende Methode erstellt:
public static List<string> GetListOfDescription<T>() where T : struct
{
Type t = typeof(T);
return !t.IsEnum ? null : Enum.GetValues(t).Cast<Enum>().Select(x => x.GetDescription()).ToList();
}
Wenn Sie diesen Helfer aufrufen, erhalten Sie die Liste der Artikelbeschreibungen.
List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();
ADDITION: Wenn Sie diese Methode implementieren möchten, benötigen Sie auf jeden Fall die Erweiterung GetDescription für enum. Das ist was ich benutze.
public static string GetDescription(this Enum value)
{
Type type = value.GetType();
string name = Enum.GetName(type, value);
if (name != null)
{
FieldInfo field = type.GetField(name);
if (field != null)
{
DescriptionAttribute attr =Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return null;
/* how to use
MyEnum x = MyEnum.NeedMoreCoffee;
string description = x.GetDescription();
*/
}