2008-11-24 16 views
193

Duplicar posible:
How do I mark a method as Obsolete/Deprecated? - C#¿Cómo marcar una clase como Deprecated?

¿Cómo marcar una clase como obsoletos? No quiero usar una clase más en mi proyecto, pero no quiero eliminarla antes de un período de 2 semanas.

+13

¿No es mala forma marcar la pregunta anterior como el duplicado? – noelicus

+2

Deberíamos marcar la primera pregunta como obsoleta/obsoleta. Entonces la pregunta es ahora: ¿cómo marcar una pregunta como desaprobada? –

Respuesta

343

Tiene que utilizar el atributo [Obsolete].

Este es un ejemplo:

[Obsolete("Not used anymore",true)] 
public class MyDeprecatedClass 
{ 
    //... 
} 

Usted no tiene parámetros de uso, que son opcionales (método sobrecargado). El primer parámetro es por el motivo y el último es marcar un error en tiempo de compilación en lugar de una advertencia.

+0

El '[Obsoleto (" No usado más ", verdadero)]' aquí sufre de dos fallas principales: 1. Si el código no se usa más, se debe eliminar 2. La explicación no proporciona información sobre qué usar/hacer en cambio. – mayu

-5

Si está utilizando el control de versiones, le recomendaría simplemente eliminar la clase. No hay razón para tener un código sin usar.

El control de versiones será útil para deshacer si decides después que quieres la clase.

+3

Supongo/supongo que quiere marcarlo en desuso para permitir que el código se compile mientras tanto, mientras que él elimina todas las referencias a él en la base de código. – shsteimer

+0

Acepto, ¿por qué no eliminar la clase, o si no tienes control de versión, comentarlo? – configurator

+0

Esa sería una gran razón para no usar mi solución, supongo. – jjnguy

16

La razón para no borrar una clase y desaprobar en su lugar es adherirse a algunas "políticas de cortesía" cuando su código es una API establecida y luego es consumida por terceros.

Si desaprueba en lugar de borrar, otorga a los consumidores una política de ciclo de vida (por ejemplo, mantenimiento y existencia de las clases hasta la versión X.X) para permitirles planificar una migración adecuada a su nueva API.

35

De acuerdo con la respuesta de Doak, pero el segundo parámetro del atributo se debe establecer en falso si desea que el código para compilar:

[Obsolete("Not used anymore", false)] 
public class MyDeprecatedClass 
{ 
     //... 
} 

Esto acaba de lanzar advertencias.

+1

También puede dejar el atributo desactivado por completo (su valor predeterminado es falso): '[Obsoleto (" No se usa más ")]'; personalmente encuentro esto más legible sin el booleano al final. – Wolfgang

Cuestiones relacionadas