필요 네임스페이스
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;