Ler em inglês

Compartilhar via


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.

Para corrigir este erro

Remova o atributo Obsolete do membro de substituição ou adicione-o ao membro da classe base.

Exemplo

C#
// CS0809.cs
public class Base
{
    public virtual void Test1()
    {
    }
}
public class C : Base
{
    [System.Obsolete()]
    public override void Test1() // CS0809
    {
    }
}

Métodos reconhecidos como obsoletos

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:

C#
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.

Confira também