Error del compilador CS0546

Actualización: noviembre 2007

Mensaje de error

'descriptor de acceso': no se puede reemplazar porque 'propiedad' no tiene un descriptor de acceso set reemplazable
'accessor' : cannot override because 'property' does not have an overridable set accessor

Se intentó invalidar uno de los métodos de descriptor de acceso para una propiedad, pero se produjo un error porque no se puede invalidar el descriptor de acceso. Se puede resolver el error de la siguiente forma:

  • Agregando un descriptor de acceso set en la clase base.

  • Quitando el descriptor de acceso set de la clase derivada.

  • Ocultando la propiedad de clase base, agregando la palabra clave new en una propiedad de una clase derivada.

  • Convirtiendo en virtual la propiedad de clase base.

Para obtener más información, vea Utilizar propiedades (Guía de programación de C#).

Ejemplo

El código siguiente genera el error CS0546.

// CS0546.cs
// compile with: /target:library
public class a
{
   public virtual int i
   {
      get
      {
         return 0;
      }
   }

   public virtual int i2
   {
      get
      {
         return 0;
      }

      set {}
   }
}

public class b : a
{
   public override int i
   {
      set {}   // CS0546 error no set
   }

   public override int i2
   {
      set {}   // OK
   }
}