¿Cómo marcar un método como obsoleto o obsoleto?

Respuestas:

1595

La forma más corta es mediante la adición de ObsoleteAttributecomo un atributo al método . Asegúrese de incluir una explicación adecuada:

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

También puede hacer que la compilación falle, tratando el uso del método como un error en lugar de una advertencia , si se llama al método desde algún lugar del código como este:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
empuje
fuente
98
si desea que el compilador arroje un error si alguien usa el método, use el método sobrecargado Obsoleto (mensaje de cadena, error de Bool)
HitLikeAHammer
141
Obsoleto sin una descripción debe ser obsoleto ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe
31
En sus ejemplos, la parte "Método1 está en desuso" es bastante redundante. Al marcarlo como obsoleto, está diciendo que, de hecho, es obsoleto, por lo que no es necesario repetirlo en el mensaje. Especialmente porque la advertencia / error resultante leerá 'Método1' está obsoleto: 'El Método1 está en desuso, utilice el Método2 en su lugar'.
irreal
8
Esta bien. Acabo de poner un texto de ejemplo allí para mostrar que puede agregar un mensaje más específico si lo desea.
Chris Ballance
14
@ akshay2000 Cambiar el nombre o eliminar el método dejaría al consumidor sin saber por qué fue renombrado o eliminado y qué debería usarse en su lugar.
Lensflare
136

Para marcar como obsoleto con una advertencia:

[Obsolete]
private static void SomeMethod()

Recibes una advertencia cuando la usas:

Se muestra una advertencia obsoleta

Y con IntelliSense:

Advertencia obsoleta con IntelliSense

Si quieres un mensaje:

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

Aquí está la información sobre herramientas de IntelliSense:

IntelliSense muestra el mensaje obsoleto

Finalmente, si desea que el uso se marque como un error:

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

Cuando se usa esto es lo que obtienes:

El uso del método se muestra como un error

Nota: Use el mensaje para decirle a la gente qué deberían usar, no por qué es obsoleto.

mark_h
fuente
66

Agregue una anotación al método usando la palabra clave Obsolete. El argumento del mensaje es opcional, pero es una buena idea comunicar por qué el elemento ahora está obsoleto y / o qué usar en su lugar.
Ejemplo:

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

Con ObsoleteAttributeusted puede mostrar el método obsoleto. El atributo obsoleto tiene tres constructores:

  1. [Obsolete]: es un constructor sin parámetros y es un valor predeterminado que utiliza este atributo.
  2. [Obsolete(string message)]:en este formato puede saber messagepor qué este método está en desuso.
  3. [Obsolete(string message, bool error)]:en este formato, el mensaje es muy explícito pero errorsignifica que, en tiempo de compilación, el compilador debe mostrar un error y hacer que la compilación falle o no.

ingrese la descripción de la imagen aquí

Sina Lotfi
fuente