with strings net enum define como acceder c# .net enums generic-list

c# - strings - Convierta un enum a List<string>



return enum c# (2)

¿Cómo convierto el siguiente Enum en una lista de cadenas?

[Flags] public enum DataSourceTypes { None = 0, Grid = 1, ExcelFile = 2, ODBC = 4 };

No pude encontrar esta pregunta exacta, este Enum to List es el más cercano, pero específicamente quiero List<string>


Quiero agregar otra solución: en mi caso, necesito usar un grupo Enum en un elemento de la lista de botones desplegables. Por lo tanto, pueden tener espacio, es decir, se necesitan descripciones más fáciles de usar:

public enum CancelReasonsEnum { [Description("In rush")] InRush, [Description("Need more coffee")] NeedMoreCoffee, [Description("Call me back in 5 minutes!")] In5Minutes }

En una clase de ayuda (HelperMethods) creé el siguiente método:

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(); }

Cuando llamas a este ayudante obtendrás la lista de descripciones de los artículos.

List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();

ADICIÓN: en cualquier caso, si desea implementar este método, necesita: la extensión GetDescription para enum. Esto es lo que uso

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(); */ }


Usa el método estático de Enum , GetNames . Devuelve una string[] , así:

Enum.GetNames(typeof(DataSourceTypes))

Si desea crear un método que solo haga esto para un solo tipo de enum , y también lo convierte en una List , puede escribir algo como esto:

public List<string> GetDataSourceTypes() { return Enum.GetNames(typeof(DataSourceTypes)).ToList(); }