ㆍ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() { }