Il arrive quelquefois que nous devions utiliser des composants
dont certaines parties sont devenues obsolètes avec le temps.
Malheureusement, il est parfois impossible (contrainte de temps
et/ou d'argent) de refaire le code en intégralité. Ainsi, la
plupart du temps nous en-capsulons les anciens composants dans
de nouveaux.
Seulement comment interdire l'accès aux propriétés obsolètes
de la classe de base et les remplacer par de nouvelles ?
En réalité c'est assez simple. Cette problématique a été résolue
Dans la version 2 du framework .Net. Il suffit d'utiliser l'attribut
"Obsolete" et de "override" certaines propriétés.
___________________________________________________________________
using System;
namespace Test
{
class A
{
// Rem: la class A peut toujours utiliser cette propriété.
public bool OldProperty { get; set; }
}
class B : A
{
// On indique au compilateur que la propriété est obsolète
[Obsolete("utilisez NewProperty à la place.", true)]
public new bool OldProperty { get; set; } // on "override" la propriété
public bool NewProperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
B test = new B();
test.NewProperty = true; // OK
test.OldProperty = true; // Provoque une erreur à la compilation
}
}
}