C# Custom Attribute 작성하기

Custom Attribute 작성하기

ㆍAttribute 클래스 상속 받는다.
ㆍAttributeUsage 클래스로 attribute 가 사용될 속성 들을 정의한다. (사용범위 및 Inherited , AllowMultiple)
ㆍAttributeUsage(옵션)의  옵션에서 AttributeTarget 열거형으로 attribute 가 사용될 범위 타깃을 지정.
    (여러개 지정할경우 | 필터사용하며 Inherit , AllowMultiple 옵션은 , 로 구분해서 작성한다.)

ㆍAttributeUsage  의 AttributeTarget  지정에 따라  Class 와 Method 에만 CustomAttirute 를 사용할 수 있다.

   (class , method , ctor property , interface 등 모든 속성들에 target 지정가능하면, 모두 AttributeTarget.All 지정

ㆍvalidOn :  속성을 사용해도 같음(생략가능)

   [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method , AllowMultiple = true , Inherited = false)]
   [AttributeUsage(validOn : AttributeTargets.Class | AttributeTargets.Method , AllowMultiple = true , Inherited = false)]  

    – AllowMultiple : 같은 Target 에 여러번 중복해서 지정하는것을 허용  true or false(기본 false)

    – Inherited : 파생되는 클래스나 재정의되는 메서드에도 적용할 것인가를 지정한다. (기본 true)

 
 <MyCustomAttribute.cs>
 [AttributeUsage(AttributeTarget.Class | AttributeTarget.Method  , Inherited =false , AllowMultiple=false)]
  public class MyCustomAttribute : Attribute
  {
        public string NickName {get; set;}
        public string BithDay {get; set}

        public MyCustomAttribute (string name, string age)
        {
                // name , age  뭔가 처리
        }
  }

★  attribute 의 클래스명이 MyCustomAttribute 으로 작성했지만 사용시 Attribute 를 생력하고 MyCustom 으로 사용


<MyCustomController.cs>
[MyCustom(name: “pluginn”, age: 20)]     // 생성자 매개변수(name ,age)는 필수 , 속성은(NickName , BirthDay)은 선택
[Route(“api/[controller]”)]
[ApiController]
public class MyCustomController
{
     public MyCustomController()
     {
     }

     [MyCustom(name: “pluginn”, age: 20 , NickName=”플러그인”,BirthDay=”10/29)]   // 매개변수 필수값 , 속성 선택값
     [HttpGet]
     public IEnumable<MyData> Get()
     {
     }
}

 
 

 

Posted in C#

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다