Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.