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.
Quite el atributo Obsolete
del miembro de reemplazo o agréguelo al miembro de clase base.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
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.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: