Beren.it

All that you can leave behind

Classi Obsolete in C#

Durante il ciclo di vita di un software pò accadere, ed in effetti succede non di rado, che alcune classi vengano migliorate, ampliate o, in genere per motivi di compatibilità con il passato, affiancate da nuove versioni delle stesse. In questo caso, per dare evidenza allo sviluppatore di usare la nuova versione, è possibile in C# contrassegnare con l'attributo Obsolete la vecchia classe.

L'esempio di codice seguente illustra un semplice caso:

[C#]

[Obsolete("This class is obsolete; use class B instead")]
class A
{
   public void F() {}
}

class B
{
   public void F() {}
}

class Test
{
   static void Main() {
      A a = new A();       // Warning
      a.F();
   }
}

La classe A è marcata come obsoleta, questo significa che quando verrà instanziata il compilatore genererà un warning con il testo specificato nel tag obsolete che la decora.

Il costruttore dell'attributo oltre alla stringa che verrà visualizzata con il Warning offre anche un parametro booleano aggiuntivo che impone al compilatore di non effettuare l'escape sui caratteri speciali. In generale questo parametro dovrà essere tenuto a false (che è il default) a meno che non siano necessari comportamenti particolari, che andranno in ognicaso gestiti con molta attenzione.