>  기사  >  백엔드 개발  >  C# 열거형 값에서 해당 텍스트를 얻기 위한 그래픽 코드에 대한 자세한 설명

C# 열거형 값에서 해당 텍스트를 얻기 위한 그래픽 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-28 11:42:031854검색

이 글에서는 열거형 값에서 해당 텍스트 설명을 가져오는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.