Je n'ai pas vu un tel attribut, mais je suppose que c'est possible. Cet article sur MSDN décrit versioning grâce à l'utilisation de l' overrides
et new
mots-clés.
En bref, C# est équipé avec des fonctionnalités de langage qui permettent de classes dérivées d'évoluer et de toujours maintenir la compatibilité. Cet exemple montre purement base de dérivés de la relation, mais la base serait effectivement mettre en œuvre l'interface que vous avez besoin de la version. Avoir une interface de demander à une autre (la version précédente) interface couplé avec cette méthode est très utile aussi.
Exemple de création d'une interface qui nécessite un autre:
public interface IMyInterface
{
void FirstMethod();
}
public interface IMySecondInterface : IMyInterface
{
void SecondMethod();
}
Exemple de l'utilisation de l'héritage pour maintenir la compatibilité:
public class MyBase
{
public virtual string Meth1()
{
return "MyBase-Meth1";
}
public virtual string Meth2()
{
return "MyBase-Meth2";
}
public virtual string Meth3()
{
return "MyBase-Meth3";
}
}
class MyDerived : MyBase
{
// Overrides the virtual method Meth1 using the override keyword:
public override string Meth1()
{
return "MyDerived-Meth1";
}
// Explicitly hide the virtual method Meth2 using the new
// keyword:
public new string Meth2()
{
return "MyDerived-Meth2";
}
// Because no keyword is specified in the following declaration
// a warning will be issued to alert the programmer that
// the method hides the inherited member MyBase.Meth3():
public string Meth3()
{
return "MyDerived-Meth3";
}
public static void Main()
{
MyDerived mD = new MyDerived();
MyBase mB = (MyBase) mD;
System.Console.WriteLine(mB.Meth1());
System.Console.WriteLine(mB.Meth2());
System.Console.WriteLine(mB.Meth3());
}
}