Nov 03 2008
ObsoleteAttribute - Para refactorear y mantener compatibilidad {
Algo muy común a la hora de refactorear es que se elimine algún método o alguna clase, pero si estamos trabajando en un grupo de soluciones con referencias entre ellas, eliminar un método puede causar bastantes problemas… y molestias en quienes estén trabajando con nuestro código.
.Net ofrece una ayuda, es un atributo que se puede aplicar a clases, métodos, propiedades, variables y constantes y que sirve de alternativa para no romper compatibilidad, el attributo Obsolete() nos permite marcar como obsoleta una porción del código sin eliminarlo y nos brinda la posibilidad de mostrar un mensaje y generar una advertencia o bien un error a la hora de compilar.
Veamos un pequeño ejemplo en VB.Net y luego en C#
Public Class MiClase <Obsolete("Este constructor fue reemplazado por New(String, Boolean)", True)> _ Public Sub New(Arg1 as String, Arg2 as String) ' Código del ctor obsoleto ' Ahora genera un error al compilar End Sub Public Sub New(Arg1 as String, Arg2 as Boolean) 'Código del nuevo ctor End Sub <Obsolete("Esta propiedad está obsolete. Por favor eliminar toda referencia a la misma antes del release 2.0")> _ Public ReadOnly Property IsObsolete() As Boolean Get Return True End Get End Property End Class
class Ejemplo { [Obsolete()] public const string MI_CONSTANTE = "NuevosProgramadores.com"; [Obsolete("No usar esta variable. Utilizar la variable FechaHoraActual en su lugar.", false)] DateTime Fecha = DateTime.Now; }
A simple vista se puede ver que la única diferencia entre su uso en VB.net y C# es que los atributos se aplican de manera diferente.
Por último veamos las 3 firmas de este atributo:
- Obsolete() - Genera una advertencia (warning) sin descripción alguna.
- Obsolete(String) - Genera una advertencia con con la descripción indicada en el parámetro.
- Obsolete(String, Boolean) - Utiliza el parámetro String como descripción y el Boolean indica si genera una advertencia (false) o un error (true).
}