Esiste un modo per restituire un'istanza di un oggetto readonly?C# readonly object
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!
}
}
è l'unico modo per farlo restituendo un clone() in modo che tutte le modifiche sono fatte per il Clone e non l'originale? So per gli array c'è una funzione per restituire l'array come di sola lettura. Oh, e so che questo è un tipo di riferimento ... Inoltre mi chiedo se ci sia qualche caratteristica nascosta in C# per bloccare la porzione di scrittura.
Stavo cercando di creare una classe di wrapper ReadOnly generica, ma non riuscivo a capire come ottenere le proprietà come readonly senza fare un po 'di riflessione costosa e così via.
Oh, e sto davvero cercando di evitare di creare una seconda versione della classe che sia tutte proprietà di sola lettura. A quel punto, potrei anche restituire il clone.
Sulla base delle osservazioni: c'è qualche nota "ReadOnly" classe wrapper generico che è veloce e efficiente? Quello che ho provato a fare ha dovuto usare la riflessione, che non è proprio quello che voglio fare se posso evitarlo. –