c# readonly objet

Est-il un moyen pour revenir en lecture-seule instance d'un objet?

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

Est la seule façon de le faire en retournant un Clone() de sorte que toutes les modifications sont faites à la copie et non l'original? Je sais que pour les Tableaux il y a une fonction pour retourner un Tableau en lecture seule. Oh, et je sais que c'est un type de référence... je suis d'ailleurs vous vous demandez si il y a un peu caché C# fonction pour verrouiller l'écriture de la partie.

J'ai été essayer de venir avec un Générique En lecture seule classe wrapper, mais je ne pouvais pas comprendre comment obtenir les propriétés en lecture seule sans faire certains cher la réflexion et le tel.

Oh, et je suis vraiment essayer d'éviter de créer une deuxième version de la classe qui est de toutes les propriétés en lecture seule. À ce point, je pourrais tout aussi bien retourner le clone.

  • Sur la base des commentaires: il y a connu "En lecture seule" classe wrapper générique est rapide et efficace? Celui que j'ai essayé de faire avait à utiliser la réflexion, ce qui n'est pas vraiment ce que je veux faire, si je peux l'éviter.
InformationsquelleAutor m-y | 2010-08-23