C# Obsolete 특성(Attribute)이란?
Obsolete 특성은 코드 내의 클래스, 메서드, 속성(Property), 필드, 델리게이트 등 다양한 프로그램 요소를 '더 이상 사용되지 않음(Deprecated)'으로 표시하는 데 사용됩니다. 이 특성은 컴파일 시점에 읽혀지며, 개발자에게 경고(Warning) 또는 오류(Error)를 발생시키는 역할을 합니다.
이 특성은 프로그래머가 반드시 최신 버전의 메서드를 사용하도록 유도하고 싶을 때 매우 유용합니다. 또한 기존의 구버전 메서드에서 새로운 메서드로 전환하는 과정에서 작업을 훨씬 수월하게 만들어 줍니다. 특정 요소를 폐기(Obsolete) 상태로 표시해 두면, 해당 프로그램 요소가 향후 코드베이스의 버전 업데이트 시 제거될 것임을 사용자에게 미리 알릴 수 있습니다.
이 특성은 System 네임스페이스에 포함되어 있으며, 프로그램 요소 바로 위에 대괄호([]) 안에 "Obsolete"라고 작성하여 적용합니다. 특성이므로 Obsolete와 ObsoleteAttribute 두 가지 이름 모두 사용할 수 있습니다.
Obsolete 특성의 세 가지 생성자
- [Obsolete] — 매개변수 없는 기본 생성자로, 이 특성의 가장 기본적인 사용 형태입니다.
- [Obsolete(string message)] — 해당 메서드가 왜 폐기되었는지 설명하는 메시지를 함께 전달할 수 있는 형식입니다.
- [Obsolete(string message, bool error)] — 메시지와 함께 두 번째 불린(bool) 매개변수를 통해 컴파일러가 컴파일 시점에 오류를 발생시킬지 여부를 제어할 수 있는 형식입니다.
사용 예제
using System;
namespace DemoApplication{
class Demo{
static void Main(string[] args){
ObseleteMethod();
ObseleteMethodWithMessage();
ObseleteMethodWithMessageAndNoFail();
ObseleteMethodWithMessageAndFail();
}
[Obsolete]
public static void ObseleteMethod() { }
[Obsolete("This Method is Deprecated")]
public static void ObseleteMethodWithMessage() { }
[Obsolete("This Method is Deprecated", false)]
public static void ObseleteMethodWithMessageAndNoFail() { }
[Obsolete("This Method is Deprecated", true)]
public static void ObseleteMethodWithMessageAndFail() { }
}
}실행 결과
위 코드를 실행하면 각각의 폐기된 메서드 호출에 대해 컴파일러가 경고 또는 오류를 출력합니다. false를 지정한 경우에는 경고만 표시되고 컴파일은 정상적으로 완료되며, true를 지정한 경우에는 컴파일 자체가 실패하며 오류가 발생합니다.
