프로그램이나 라이브러리를 버전업할 때 기존에 제작했던 함수를 새로운 기능을 추가한 함수로 대체하거나 할 경우가 생길 수 있습니다.
이런 경우, 기존에 제공하던 함수를 삭제하게 되면 하위 프로그램들과의 호환성에 문제가 생기고, 그냥 두면 코드가 복잡해지고 어디에서 사용했는지 분간해내기 어려운 경우가 생깁니다.
이때, Obsolete 특성을 사용하게 되면 그러한 문제를 해결 할 수 있습니다.
Obsolete 특성은 그 위치의 항목을 앞으로 계속 사용하지 않는 편이 좋은 것으로 표시해줍니다. 이 특성이 어떻게 구성되어 있는지에 따라 Obsolete로 표시된 항목을 사용할 때마다 경고나 오류가 표시됩니다. 예를 들면 다음과 같습니다.
[System.Obsolete("use class B")]
class A
{
public void Method() { }
}
class B
{
[System.Obsolete("use NewMethod", true)]
public void OldMethod() { }
public void NewMethod() { }
}
위와 같이 적용하고 A 클래스를 사용하게 되면 "use class B" 메세지의 경고가 생성되게 됩니다.
그리고 B 클래스의 OldMethod 함수를 호출하게 되면 이 경우에는 두번째 인수가 true로 설정되어 있으므로 컴파일러 오류가 발생하게 됩니다.
Obsolete 특성은 인수 없이도 사용할 수 있지만 해당 항목이 계속 사용되지 않는 이우와 대신 사용할 항목에 대한 정보를 포함하는 것이 좋습니다.