C#에서 애트리뷰트(Attribute)는 코드에 메타데이터를 추가하는 강력한 방법입니다. 하지만 애트리뷰트를 잘못된 대상에 적용하면 의도치 않은 동작이 발생할 수 있어서, AttributeTargets를 사용해 적용 범위를 제한하는 것이 중요합니다.
1. AttributeTargets란?
AttributeTargets는 애트리뷰트를 어디에 사용할 수 있는지 지정하는 열거형(enum)입니다. 클래스, 메서드, 필드 등 다양한 코드 요소에 대해 사용할 수 있는 위치를 제한합니다.
2. 사용법
커스텀 애트리뷰트를 정의할 때, AttributeUsage 특성을 이용해 적용 대상과 기타 옵션을 설정합니다. 예를 들어, 클래스와 메서드에만 적용 가능하도록 제한하려면 다음과 같이 지정합니다.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyCustomAttribute : Attribute
{
// 구현 내용
}
3. 주요 AttributeTargets 값
AttributeTargets.Class: 클래스에 적용AttributeTargets.Method: 메서드에 적용AttributeTargets.Field: 필드에 적용AttributeTargets.Property: 프로퍼티에 적용AttributeTargets.Parameter: 메서드 매개변수에 적용- 여러 값을 파이프(|)로 조합 가능
4. 예제
아래 예제는 클래스와 메서드에만 적용 가능한 커스텀 애트리뷰트를 정의하고 사용하는 코드입니다.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class InfoAttribute : Attribute
{
public string Author { get; }
public InfoAttribute(string author)
{
Author = author;
}
}
[Info("홍길동")]
public class SampleClass
{
[Info("이순신")]
public void SampleMethod() { }
// [Info("테스트")] // 오류: 프로퍼티에는 적용 불가
// public int SampleProperty { get; set; }
}
이처럼 애트리뷰트 적용 범위를 명확히 지정하면, 코드를 보다 안전하고 명확하게 관리할 수 있습니다.
'C#' 카테고리의 다른 글
| C# 종속성 주입(DI) 패턴과 IServiceProvider 활용 (0) | 2026.05.30 |
|---|---|
| C# System.FormattableString으로 다국어 문자열 처리 (0) | 2026.05.30 |
| C# BinarySearch와 검색 알고리즘 성능 비교 (0) | 2026.05.29 |
| C# yield return을 이용한 지연 실행(Deferred Execution) (0) | 2026.05.29 |
| C# ReadOnlyMemory<T>와 메모리 안전성 확보 (0) | 2026.05.29 |