Avviso del compilatore (livello 1) CS0809
Il membro obsoleto 'memberA' esegue l'override del membro non obsoleto 'memberB'.
In genere, un membro contrassegnato come obsoleto non deve eseguire l'override di un membro che non è contrassegnato come obsoleto. Questo avviso viene generato in Visual Studio 2008 ma non in Visual Studio 2005.
Rimuovere l'attributo Obsolete
dal membro che esegue l'override oppure aggiungerlo al membro di classe base.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
Si noti che l'avviso del compilatore CS0809
non genera alcun avviso di CS0618
quando chiama effettivamente il metodo obsoleto.
Nell'esempio seguente il compiler non avviserà che il metodo Test
è obsoleto, perché la dichiarazione riconosciuta dal compilatore durante la chiamata si trova nella classe base Base
, non nella classe derivata Derived
:
class Base
{
public virtual void Test() {}
}
class Derived : Base
{
[System.Obsolete()]
public override void Test() { }
}
static class Program
{
public static void Main()
{
Derived derived = new();
b.Foo(); // No CS0618
}
}
Per risolvere questo problema, aggiungere anche l'attributo Obsolete
alla classe base.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: