¿Hay alguna forma de devolver una instancia de solo lectura de un objeto?C# readonly objeto
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
}
public class SomeClass
{
public SomeClass(Person manager)
{
if (manager == null)
throw new ArgumentNullException("manager");
_manager = manager;
}
private readonly Person _manager;
public Person Manager
{
get { return _manager; } //How do I make it readonly period!
}
}
es la única manera de hacer esto mediante la devolución de un clon() para que los cambios se hacen para el clon y no el original? Sé que para Arrays hay una función para devolver el Array como de solo lectura. Ah, y sé que este es un tipo de referencia ... Me pregunto si hay alguna función oculta de C# para bloquear la parte de escritura.
Estaba tratando de crear una clase de contenedor genérico ReadOnly, pero no pude encontrar la manera de obtener las propiedades de solo lectura sin hacer una reflexión costosa y cosas por el estilo.
Ah, y realmente estoy tratando de evitar crear una segunda versión de la clase que sea solo de solo lectura. En ese punto, podría devolver el clon.
Sobre la base de los comentarios: ¿Hay alguna conocida clase de contenedor genérico de "sólo lectura", que es rápido y ¿eficiente? El que traté de hacer tuvo que usar la reflexión, que no es realmente lo que quiero hacer si puedo evitarlo. –