본문 바로가기

C#/Study

[복습]애트리뷰트 - Attribute, C#

반응형

애트리뷰트(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을 호출한 메서드, 행 번호, 호출된 소스 경로가 출력된 것을 확인할 수 있다.

 

반응형