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
}
}