이 글에서는 열거형 값에서 해당 텍스트 설명을 가져오는 C#에 대한 관련 정보를 주로 소개합니다. 필요한 친구는 열거형 값에서
C#을 참조할 수 있습니다. 해당 텍스트 설명 가져오기
열거형 값이 표시될 때 열거형 값에 해당하는 문자열을 표시해야 하는 경우가 있습니다. 한 가지 해결책은 스위치를 사용하거나 호출 위치에서 열거형 값을 결정한 다음 이를 다른 텍스트 문자열에 할당하는 것입니다. 귀찮은. 물론 어떤 사람들은 이 경우 이 열거형 값에 대한 메서드를 캡슐화한 다음 호출할 수 있다고 말합니다. 그렇다면 이러한 요구 사항이 있는 여러 열거형 유형이 있는 경우에는 어떻게 될까요? 더 일반적인 해결책이 있습니까? 일부.
여기에서 설명 속성을 사용하고 이 속성을 각 열거 값에 할당한 다음 이 속성에 설명할 텍스트 문자열을 할당해야 합니다. 예:
#region YesNoEnum public enum YesNoEnum { [Description("是")] Yes, [Description("否")] No } #endregion
참고: 설명은 System.ComponentModel을 사용하여 참조해야 합니다.
이 설명 속성의 값을 가져오는 방법은 무엇입니까? 리플렉션을 사용할 수 있으며, 코드는 다음과 같습니다.
public static class EnumUtil { #region FetchDescription /// <summary> /// 获取枚举值的描述文本 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string FetchDescription(this Enum value) { FieldInfo fi = value.GetType().GetField(value.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes( typeof(DescriptionAttribute), false); return (attributes.Length > 0) ? attributes[0].Description : value.ToString(); } #endregion }
참고: 여기서 작성한 내용은 정적 메서드이지만 모든 Enum 클래스에 적용할 수 있습니다. EnumUtil은 정적 클래스여야 하고, 메서드도 정적 메서드여야 하며, 첫 번째 매개 변수가 이것이어야 메서드를 Enum 클래스로 확장하여 모든 열거형에 적용할 수 있습니다.
다음은 호출 코드입니다
YesNoEnum yesNoEnum = YesNoEnum.Yes; string description = yesNoEnum.FetchDescription(); Console.WriteLine(description);
통화 스크린샷은 다음과 같습니다
그림에서 볼 수 있듯이 설명은 열거형에 지정한 설명의 텍스트를 가져옵니다. 동시에 YesNoEnum의 열거형 인스턴스는 FetchDescription 확장 메서드를 추가합니다.
위 내용은 C# 열거형 값에서 해당 텍스트를 얻기 위한 그래픽 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!