더 이상 사용되지 않거나 더 이상 사용되지 않는 방법을 표시하는 방법은 무엇입니까?


1003

C #을 사용하여 메소드를 더 이상 사용되지 않거나 더 이상 사용되지 않는 것으로 표시하려면 어떻게합니까 ?


다음은 쓸모없는 속성의 3 가지 변형을 모두 설명하는 YouTube 동영상입니다. youtube.com/watch?v=_AQ5wsPnfJ4
Shivprasad Koirala

3
잊지 마세요 [EditorBrowsable(EditorBrowsableState.Never)]( stackoverflow.com/a/9086345/661933 ). 약간 다른 목적으로 사용됩니다.
nawfal

답변:


1594

가장 짧은 방법은 ObsoleteAttributeas 속성을 메소드 에 추가 하는 것 입니다. 적절한 설명을 포함해야합니다.

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{  }

메소드가 다음과 같은 코드에서 호출되는 경우 메소드 사용을 경고 대신 오류 로 처리하여 컴파일이 실패하게 할 수도 있습니다 .

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]

97
누군가가 메소드를 사용하는 경우 컴파일러에서 오류가 발생하도록하려면 오버로드 된 메소드를 사용하십시오. Obsolete (String Message, Bool error)
HitLikeAHammer

140
설명이없는 폐기 된 것은 폐기되어야합니다 ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe

31
예제에서 "Method1 is deprecated"부분은 다소 중복됩니다. 사용하지 않는 것으로 표시하면 실제로 사용되지 않는다는 메시지이므로 메시지에 다시 표시 할 필요가 없습니다. 특히 경고 / 오류가 발생하면 'Method1'은 더 이상 사용되지 않습니다. 'Method1은 더 이상 사용되지 않으므로 Method2를 대신 사용하십시오.'
irreal

8
괜찮아. 원하는 경우보다 구체적인 메시지를 추가 할 수 있음을 보여주기 위해 예제 텍스트를 추가했습니다.
Chris Ballance

14
@ akshay2000 메소드의 이름을 바꾸거나 제거하면 소비자가 메소드의 이름이 바뀌거나 제거 된 이유와 대신 사용해야하는 것에 대한 단서가 없게됩니다.
Lensflare

136

경고와 함께 더 이상 사용되지 않는 것으로 표시하려면 :

[Obsolete]
private static void SomeMethod()

사용할 때 경고가 표시됩니다.

사용되지 않는 경고가 표시됩니다

그리고 IntelliSense와 함께 :

IntelliSense와 함께 사용되지 않는 경고

메시지를 원하는 경우 :

[Obsolete("My message")]
private static void SomeMethod()

IntelliSense 툴팁은 다음과 같습니다.

IntelliSense에서 사용되지 않는 메시지 표시

마지막으로 사용법을 오류로 표시하려면 다음을 수행하십시오.

[Obsolete("My message", true)]
private static void SomeMethod()

사용하면 다음과 같은 이점이 있습니다.

메소드 사용법이 오류로 표시됩니다

참고 : 메시지를 사용하여 사람들이 대신 사용해야하는 이유를 알려주십시오.


66

keyword를 사용하여 메소드에 주석을 추가하십시오 Obsolete. 메시지 인수는 선택 사항이지만 항목이 더 이상 사용되지 않는 이유 및 / 또는 대신 사용할 항목을 알려주는 것이 좋습니다.
예:

[System.Obsolete("use myMethodB instead")]
void myMethodA()

36

사용 ObsoleteAttribute되지 않는 메소드를 표시 할 수 있습니다. 사용되지 않는 속성에는 세 가지 생성자가 있습니다.

  1. [Obsolete]: 매개 변수 없음 생성자이며이 속성을 사용하는 기본값입니다.
  2. [Obsolete(string message)]:이 형식 message으로이 메소드가 더 이상 사용되지 않는 이유를 알 수 있습니다 .
  3. [Obsolete(string message, bool error)]:이 형식의 메시지는 매우 명시 적이지만 error컴파일 시간에 컴파일러에 오류가 표시되어 컴파일이 실패하는지 여부를 의미합니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.