Posts C# - 커스텀 애트리뷰트
Post
Cancel

C# - 커스텀 애트리뷰트

필요 네임스페이스

1
2
using System;
using System.Linq;

1. 애트리뷰트 클래스 작성

1
2
3
4
5
6
7
[System.AttributeUsage(System.AttributeTargets.Method)]
public class CustomAttribute : System.Attribute
{
    public string Title { get; }

    public CustomAttribute(string t) => Title = t;
}

2. 타겟 메소드에 애트리뷰트 장착

1
2
3
4
5
6
7
8
public class TargetClass
{
    [CustomAttribute("Title String")]
    public void TargetMethod()
    {

    }
}

3. 대상 클래스에서 MethodInfo[] 가져오기

1
2
var methodInfos = typeof(TargetClass)
     .GetMethods(BindingFlags.Public | BindingFlags.Instance);

4. 해당 애트리뷰트를 가진 MethodInfo[] 걸러내기

1
2
3
4
var targetMethods = 
    from method in methodInfos
    where method.GetCustomAttribute(typeof(CustomAttribute)) != null
    select method;

5. 걸러진 MethodInfo[]에서 해당 애트리뷰트 객체 가져오기

1
2
3
4
foreach(var method in targetMethods)
{
    var ca = method.GetCustomAttribute(typeof(CustomAttribute)) as CustomAttribute;
}

6. 가져온 객체에서 원하는 멤버 직접 참조

1
var whatIWanted = ca.Title;


References


This post is licensed under CC BY 4.0 by the author.