반응형
애트리뷰트(Attribute)
- 애트리뷰트는 코드에 대한 부가 정보를 기록하고 읽을 수 있는 기능이다.
- 주석과의 차이는 주석은 사람이 읽고 쓰는 정보고 애트리뷰트는 사람이 쓰고 컴퓨터가 읽는다는 차이점이 있다.
예제 - Deprecated Method 구현
- 라이브러리 업데이트로 인해 사용자가 보안 등 여러 이유로 이전 버전에서 사용하던 메서드를 사용하지 못하게 하고 새로운 메서드를 사용하게 할 때 사용
class ExampleClass1
{
[Obsolete("Deprecated")]
public static void OldMethod()
{
Console.WriteLine("Old Method");
}
public static void NewMethod()
{
Console.WriteLine("New Method");
}
}
class Program
{
static void Main(string[] args)
{
ExampleClass1.OldMethod();
ExampleClass1.NewMethod();
}
}
- 위와 같이 메서드 모두 호출되는 것을 확인할 수 있다.
- Obsolete으로 Attribute를 만들어 놓은 메서드를 호출할 시에 경고메세지가 뜨게 된다.
호출자 정보 애트리뷰트
- C# 5.0 버전부터 호출자 정보 애트리뷰트가 도입됐다.
- 호출자 정보는 메서드의 매개 변수에 사용된다.
- 메서드의 호출자 이름, 호출자 메서드가 정의되어 있는 소스 파일 경로, 소스 파일 내의 행 번호까지 알 수 있다.
예제
public static class ExampleClass2
{
public static void WriteLine(string message,
[CallerFilePath] string file = "",
[CallerLineNumber] int line = 0,
[CallerMemberName] string member = "")
{
Console.WriteLine($"{file}(Line:{line}) {member}: {message}\n");
}
}
class Program
{
static void Main(string[] args)
{
Test1();
}
private static void Test1()
{
ExampleClass2.WriteLine("Hello World!");
}
}
- ExampleClass2.WriteLine을 호출한 메서드, 행 번호, 호출된 소스 경로가 출력된 것을 확인할 수 있다.
반응형
'C# > Study' 카테고리의 다른 글
[복습] Reflection - C#, 리플렉션 (0) | 2020.12.28 |
---|---|
[복습] 인덱서 - C# (0) | 2020.12.21 |
[복습] LINQ - C#, 링크 ,링큐 (0) | 2020.12.18 |
[복습] Delegate - C#, CSharp, 씨샵, 델리게이트, 대리자 (0) | 2020.12.15 |
[C# 공부] Thread(쓰레드) - 비동기 호출, Delegate - 짱우의 코딩일기 - 티스토리 (0) | 2020.04.07 |