본문 바로가기
C#

[C#] 애트리뷰트(Attribute)

728x90
반응형

애트리뷰트(Attribute) 란?

애트리뷰트는 C#에서 코드에 메타데이터를 추가할 수 있도록 도와주는 기능입니다. 단순히 글만 남길 수 있는 주석과는 달리 다양한 편의 기능을 제공합니다. 애트리뷰트는 기본으로 제공해주는 공통 애트리뷰트와 사용자가 직접 설계하는 커스텀 애트리뷰트가 있는데 공통 애트리뷰트는 컴파일에 영향을 주지만 커스텀 애트리뷰트는 영향을 주지 않습니다.

 

Conditional 애트리뷰트

Conditional 애트리뷰트는 특정 객체가 정의되어 있을경우에만 호출되도록 설정해주는 공통 애트리뷰트입니다. 만약 조건의 객체가 선언되어 있지 않을경우 오류없이 그냥 호출만 안됩니다.

#define Condition

using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using System.Text;
using System.Reflection;
using System.Threading.Tasks;


namespace ConsoleApp1
{
    class Program
    {
        [Conditional("Condition")]
        public static void Print() {
            Console.WriteLine("Print");
        }
        static void Main(string[] args)
        {
            Program.Print();
        }
    }
}

 

Obsolete 애트리뷰트

Obsolete 애트리뷰트는 특정함수가 호출될 때 경고 혹은 오류 메세지를 추렭하도록 설정해주는 애트리뷰트입니다. 보통 이전 함수에서 새로운 함수로 변경을 권장 혹은 강제할 때 사용됩니다. Obsolete 뒤에 아무 인자도 주지않거나 false를 줄경우 경고를 띄우고 true를 줄 경우 오류를 띄워줍니다.

 

 

DllImport 애트리뷰트

DllImport 애트리뷰트는 외부 dll파일에 선언되어 있는 함수를 가져와 선언하고 참조할 수 있도록 도와주는 애트리뷰트입니다. 앞선 애트리뷰트들과는 다르게 함수 구현부분에 붙이는 것이 아니라 참조를 하고 싶은 파일에서 원하는 함수를 선언해주고 애트리뷰트로 구현이 되어있는 dll파일위치를 가르쳐줍니다.

#define Condition
using System.Runtime.InteropServices;

namespace ConsoleApp1
{
    class Program
    {
        [DllImport("Test.dll")]
        public static extern void Print();

        static void Main(string[] args)
        {
            Program.Print();
        }
    }
}
반응형