Aviso do compilador (nível 1) CS0809
O membro obsoleto 'memberA' substitui o membro não obsoleto 'memberB'.
Normalmente, um membro marcado como obsoleto não deve substituir um membro que não está marcado como obsoleto. Esse aviso é gerado no Visual Studio 2008, mas não no Visual Studio 2005.
Remova o atributo Obsolete
do membro de substituição ou adicione-o ao membro da classe base.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
Observe que o aviso do compilador CS0809
não levará a nenhum aviso CS0618
ao chamar o método obsoleto.
No exemplo a seguir, o compilador não avisará sobre o método Test
ser obsoleto, porque a declaração que é reconhecida pelo compilador ao chamar está na classe base Base
, não na classe derivada 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
}
}
Para corrigir isso, adicione o atributo Obsolete
à classe base também.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: