Section 22.9: Enum 값에 부가적인 세부 설명을 추가하기
경우에 따라서, Enum 값의 이름만으로는 사용자에게 표시해주고자 하는 정보를 모두 표현하기가 어렵다는 등의 이유로, 각 Enum 들에 대해 추가적인 설명을 덧붙이고 싶을 수가 있다. 이러한 경우에는 System.ComponentModel.DescriptionAttribute
클래스를 사용할 수 있다.
예제:
public enum PossibleResults
{
[Description("Success")]
OK = 1,
[Description("File not found")]
FileNotFound = 2,
[Description("Access denied")]
AccessDenied = 3
}
이제, 특정 Enum 값에 대해 기술된 부가 설명 내용을 반환하고자 한다면 아래와 같은 방법을 사용할 수 있다:
public static string GetDescriptionAttribute(PossibleResults result) {
return ((DescriptionAttribute) Attribute.GetCustomAttribute((result.GetType().GetField(result.ToString())),
typeof (DescriptionAttribute))).Description;
}
static void Main(string[] args) {
PossibleResults result = PossibleResults.FileNotFound;
Console.WriteLine(result); // "FileNotFound" 를 출력한다
Console.WriteLine(GetDescriptionAttribute(result)); // "File not found" 를 출력한다
}
위 코드는 모든 Enum 들에 적용 가능한 extension method 형태로 손쉽게 변환될 수 있다:
static class EnumExtensions {
public static string GetDescription(this Enum enumValue) {
return ((DescriptionAttribute) Attribute.GetCustomAttribute((enumValue.GetType().GetField(enumValue.ToString())), typeof (DescriptionAttribute))).Description;
}
}
이제 다음과 같이 간단하게 사용이 가능하다:
Console.WriteLine(result.GetDescription());
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
22.11: Enum 을 사용한 비트 논리 (bitwise) 연산 (0) | 2021.06.24 |
---|---|
22.10: Enum 의 모든 항목들에 대한 이름 얻어오기 (0) | 2021.06.23 |
22.8: Enum 의 기본값 (0) | 2021.06.22 |
22.7: 예상치 못한 값으로 변경될 수도 있는 Enum (0) | 2021.06.21 |
22.6: Enum 을 문자열에서 변환하거나 문자열로 변환하기 (0) | 2021.06.21 |