다음 Enum을 문자열 목록으로 어떻게 변환합니까?
[Flags]
public enum DataSourceTypes
{
None = 0,
Grid = 1,
ExcelFile = 2,
ODBC = 4
};
이 정확한 질문을 찾을 수 없습니다.이 Enum to List 가 가장 가깝지만 특별히 원합니다.List<string>
다음 Enum을 문자열 목록으로 어떻게 변환합니까?
[Flags]
public enum DataSourceTypes
{
None = 0,
Grid = 1,
ExcelFile = 2,
ODBC = 4
};
이 정확한 질문을 찾을 수 없습니다.이 Enum to List 가 가장 가깝지만 특별히 원합니다.List<string>
답변:
사용 Enum
의 정적 방법 GetNames
. 다음 string[]
과 같이를 반환합니다 .
Enum.GetNames(typeof(DataSourceTypes))
한 가지 유형에 대해서만이 작업을 수행 enum
하고 해당 배열을으로 변환 하는 메서드를 만들려면 List
다음과 같이 작성할 수 있습니다.
public List<string> GetDataSourceTypes()
{
return Enum.GetNames(typeof(DataSourceTypes)).ToList();
}
Using System.Linq;
.ToList ()를 사용하려면 클래스 맨 위에 있어야합니다 .
Enum.GetNames(typeof(DataSourceTypes))
제네릭을 반환하는 것 같습니다 System.Array
.
public static string[] GetNames
다른 솔루션을 추가하고 싶습니다. 제 경우에는 드롭 다운 버튼 목록 항목에서 Enum 그룹을 사용해야합니다. 따라서 공간이있을 수 있습니다. 즉,보다 사용자 친화적 인 설명이 필요합니다.
public enum CancelReasonsEnum
{
[Description("In rush")]
InRush,
[Description("Need more coffee")]
NeedMoreCoffee,
[Description("Call me back in 5 minutes!")]
In5Minutes
}
도우미 클래스 (HelperMethods)에서 다음 메서드를 만들었습니다.
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();
}
이 도우미를 호출하면 항목 설명 목록이 표시됩니다.
List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();
추가 : 어쨌든이 메서드를 구현하려면 enum에 대한 : GetDescription 확장이 필요합니다. 이것이 내가 사용하는 것입니다.
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();
*/
}