[Résolu][.Net] Propriété avec set et get ayant une visibilité différente?

Voila j’ai ce code:

[code] public Guid Identifier
{
get { return (PropertyIdentifier); }
}

	protected Guid Identifier
	{
		set { PropertyIdentifier = value; }
	}[/code]

Cela ne fonctionne pas. Normal pour le compilateur, mais pas pour ma tête. Note ceci est un exemple simple, je fais plus de traitements dans le set qu’une simple affectation. Ya t’il un moyen simple de faire une chose similaire? Ou me suis je fourvoyé dans la syntaxe?

Ne serait-ce le moment de se documenter sur le mot clé __property ?

Sinon le get/set sert à contrôler l’affectation et la récupération d’attribut membre (privé, puisque dans toute bonne conception, un attribut membre est privé): est-ce bien acquis ?

Bah pour tout te dire, j’ai appris le .net sur le tas. J’en découvre tous les jours. Mais c’est difficile de “deviner” ce qui pourrait te convenir, vu que la documentation est si vaste. Merci pour le coup de pouce, je vais jeter un oeil.

edit: bon j’ai oublié de préciser; c’est du CSharp. Donc __property, c’est visiblement pour du managed C++

reedit: bon ben j’ai trouvé tout seul en testant:

public Guid Identifier { get { return (PropertyIdentifier); } protected set { PropertyIdentifier = value; } }

[quote]Cil’ date=’ 24 Jan 2006, 17:41’ post=‹ 438803 ›]
edit: bon j’ai oublié de préciser; c’est du CSharp. Donc __property, c’est visiblement pour du managed C++[/quote]

autant pour moi :stuck_out_tongue:

[quote=“alt3, post:4, topic: 27143”]public Guid Identifier
{
get { return (PropertyIdentifier); }
protected set { PropertyIdentifier = value; }
}[/quote]
Ca, ce n’est possible qu’avec C# 2.0. A ma connaissance, c’est la seule facon de faire… En C#1 il fallait passer par une méthode privée (ou protected / internal) SetIdentifier.

Sur ?
Enfin, c’est possible, cela dit. Mais le CLR supporte la possibilité depuis le 1.0, vu que les propriétés sont des méthodes séparées a ce niveau…

Effectivement, en modifiant le code IL généré (à la main, ou en utilisant des outils comme Cecil, API développée par JB Evain permettant de modifier une assembly en mémoire par le moyen d’injection de code IL dynamiquement), ca doit pouvoir se faire…
Par contre le compilo C#1, ne connait pas… Et je ne suis pas sûr que l’intellissense de VS2003 approuve…