Leer en inglés

Compartir a través de


Advertencia del compilador (nivel 1) CS0809

El miembro obsoleto 'miembroA' reemplaza al miembro no obsoleto 'miembroB'.

Normalmente, un miembro marcado como obsoleto no debe reemplazar a un miembro que no está marcado como obsoleto. Esta advertencia se genera en Visual Studio 2008, pero no en Visual Studio 2005.

Para corregir este error

Quite el atributo Obsolete del miembro de reemplazo o agréguelo al miembro de clase base.

Ejemplo

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

Métodos reconocidos como obsoletos

Tenga en cuenta que la advertencia del compilador CS0809 no provocará ninguna advertencia CS0618 al llamar realmente al método obsoleto.
En el ejemplo siguiente, el compilador no advertirá de que el método Test está obsoleto, ya que la declaración reconocida por el compilador al llamar está en la clase base Base, no en la clase 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 corregir esto, agregue también el atributo Obsolete a la clase base.

Consulte también