17
avril
2007
Les propriétés générées en C# 3.0
avril
2007
Comme je le disais dans un post précédent, en C# 3.0, on a la possibilité de laisser le compilateur nous créé le champ et le corps d’une propriété.
Ex :
class Personne
{
public string Nom { get; set; }
}
{
public string Nom { get; set; }
}
Cependant, dans certains cas, on souhaite avoir des propriétés readonly. Ne maîtrisant pas le champ (généré par le compilateur), on ne peut pas utiliser les propriétés générées pour faire cela. En fait, ce n’est pas tout à fait vrai :D. Il suffit de changer la visibilité du set :
class Personne
{
public string Nom { get; private set; }
}
{
public string Nom { get; private set; }
}
Attention cependant, il y a toujours une petite différence entre ne pas mettre de set dans la propriété et en mettre un private : avec la reflection, on peut toujours faire le set depuis une autre classe.
je suis d’accord, je voulais simplement signaler que la reflection autorise la modification de la propriété private à partir d’une autre classe. Remarque : on peut aussi taper directement dans le Field avec la réflexion.
Le private set te permet surtout de permettre la modification au sein de ta classe. Dans ce cas, tu serais obligé de passer par la variable privée… Ce qui n’est pas toujours top
Tu n’as pas besoin de reflection pour cela.