Attribute 클래스 소개, 예: 열거된 필드에 Attribute 추가

2346 단어 C#
CSDN 광고가 갈수록 많아지면서 모든 블로그 노트가 업데이트되지 않고 새 사이트 주소인 DotNet 노트Attribute류는 미리 정의된 시스템 정보나 사용자가 정의한 사용자 정의 정보를 목표 요소와 연결시킨다.대상 요소는 프로그램 집합, 클래스, 구조 함수, 의뢰, 매거, 이벤트, 필드, 인터페이스, 방법, 이식 가능 파일 모듈, 파라미터, 속성(Property), 반환값, 구조 또는 기타 속성(Attribute)이다.
속성이 제공하는 정보를 메타데이터라고도 부른다.메타데이터는 프로그램이 실행할 때 검사하여 프로그램이 데이터를 처리하는 방식을 제어할 수도 있고 외부 도구가 실행하기 전에 검사하여 프로그램이 처리하거나 자신을 유지하는 방식을 제어할 수도 있다.예를 들면.NET Framework는 속성 유형을 미리 정의하고 속성 유형을 사용하여 런타임 동작을 제어하며, 일부 프로그래밍 언어는 속성 유형 표현을 사용합니다.NET Framework 공용 유형 시스템에서 직접 지원하지 않는 언어 기능입니다.
모든 속성 유형은 Attribute 클래스에서 직접 또는 간접적으로 파생됩니다.속성은 모든 목표 요소에 적용할 수 있습니다.여러 개의 속성을 같은 목표 요소에 적용할 수 있다.또한 속성은 대상 요소에서 파생된 요소에 의해 상속될 수 있습니다.AttributeTargets 클래스를 사용하여 속성이 적용되는 대상 요소를 지정할 수 있습니다.
예:
    /// 
    ///     Attribute ,      (tips:        ,        )
    /// 
    [AttributeUsage(AttributeTargets.Field)]
    public   class EnumDisplayName : Attribute
    {
        public string displayName;
        
    }

    /// 
    ///         
    /// 
    public  enum TestEnum
    {
        [EnumDisplayName(displayName = " 1 ")]
        One,
        [EnumDisplayName(displayName = " 2 ")]
        Two,
        [EnumDisplayName(displayName = " 3 ")]
        Three
    }

그리고 디스플레이 가져오는 방법을 정의합니다Name
/// 
        ///     TestEnum displayName
        /// 
        ///    
        ///     displayName
        public static string GetOperatorActions(TestEnum oa)
        {
            string disName = "";
            Type type = oa.GetType();
            string name = Enum.GetName(type, oa);
            FieldInfo field = type.GetField(name);
            EnumDisplayName attribute = Attribute.GetCustomAttribute(field, typeof(EnumDisplayName)) as EnumDisplayName;
            disName = attribute == null ? null : attribute.displayName;
            return disName;
        }

테스트:
        static void Main(string[] args)
        {
            //    
            foreach (TestEnum suit in Enum.GetValues(typeof(TestEnum)))
            {
                GetOperatorActions(suit);
                Console.WriteLine((int)suit + " " +  GetOperatorActions(suit) + ":" + suit.ToString());
            }
        }

좋은 웹페이지 즐겨찾기