반응형
열거 형을 목록으로 변환
다음 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();
}
다른 솔루션을 추가하고 싶습니다. 제 경우에는 드롭 다운 버튼 목록 항목에서 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();
*/
}
참고 URL : https://stackoverflow.com/questions/14971631/convert-an-enum-to-liststring
반응형
'IT story' 카테고리의 다른 글
MongoDB에서 컬렉션을 CSV로 내보내는 방법은 무엇입니까? (0) | 2020.09.13 |
---|---|
필요하지 않을 때 세로 스크롤 막대를 숨기는 방법 (0) | 2020.09.13 |
DOS 명령 줄에서 Git Bash를 시작하는 방법은 무엇입니까? (0) | 2020.09.13 |
JavaScript를 사용하여 XML 구문 분석 (0) | 2020.09.13 |
동일한 프로젝트의 다른 파일에서 모듈을 포함하는 방법은 무엇입니까? (0) | 2020.09.13 |