Mi proyecto contiene una gran cantidad de clases con propiedades cuyo campo de respaldo está marcado como "solo lectura", ya que solo se configuran en la construcción. Como una cuestión de estilo, me gusta usar auto-propiedades, ya que elimina una gran cantidad de código repetitivo y alienta el uso del miembro de la propiedad en lugar del campo de respaldo. Sin embargo, cuando uso una propiedad automática, pierdo la "capacidad de lectura" de mi campo de respaldo. Yo entiendo que el compilador/tiempo de ejecución es capaz de tomar ventaja de algunas mejoras en el rendimiento cuando un campo está marcado de esta manera, así que me gustaría ser capaz de marcar mi auto-propiedad como de sólo lectura, algo como esto:¿Es posible forzar una propiedad automática para utilizar un campo de respaldo de solo lectura?
[ReadOnly]
public string LastName { get; }
en lugar de
private readonly string _LastName;
public string LastName
{
get
{
return _LastName;
}
}
¿Hay algún mecanismo disponible para hacer esto? De lo contrario, ¿es realmente útil la ganancia de rendimiento del campo de respaldo personalizado?
Exponer el campo como público es otra opción, supongo, parece incorrecto exponer un campo de esa manera. es decir,
public readonly string LastName;
Acepto que parece incorrecto exponer un campo público de solo lectura. Si alguna vez tuvo que cambiar a una propiedad más adelante, el cambio rompería la compatibilidad. –
Como las respuestas se han anotado correctamente, no, no hay forma de hacer esto ahora. Esta es una característica que se solicita con frecuencia y, sin duda, ocupa un lugar destacado en la lista de posibles características nuevas para versiones hipotéticas futuras del idioma. Personalmente, me gustaría tener un conjunto completo de características relacionadas que fomenten la programación en un estilo inmutable; este sería solo uno de ellos. –