Salut
Est il possible dans un Set ou Get de recuperer des informations sur la propriete ? (par ex : nom , type)
Meerci ! :yaisse2:
Version imprimable
Salut
Est il possible dans un Set ou Get de recuperer des informations sur la propriete ? (par ex : nom , type)
Meerci ! :yaisse2:
Vu la question, j'aurais tendance à te demander ce que tu cherches à faire. Parce que j'ai du mal à voir l'intérêt de la chose comme ça.
:P
je cherche a lever l evenement PropertyChanged mais sans etre a chaque fois obliger de mettre le nom de la propriete en "dur".
Aucun intérêt de faire ça à mon avis, je doute même que Microsoft ce soit embêté avec ça ^^
S'il y a un moyen de faire ça ce sera avec la réflexion, mais vu la perte de temps associée, autant oublier.
ok :aie:
La réflexion est la methode la plus simple, ou encore utiliser le StackFrame.GetFrames[0].
J'ai déja essayer de faire un modelBase qui Héritait de RealProxi\ContextBoundObject pour pouvoir faire ce que tu demande via un proxie, mais jai pas réussi a cause du MarshalByRef que ces classe hérite. Si jamais tu veux t'essayer et que tu réussi, laisse moi un PM
En fait, en interne une propriété est une paire de méthodes get_X et set_X. Tu peux obtenir la méthode courante, mais pas directement la propriété.
Ce code permet d'obtenir le nom de la propriété en cours :
A partir d'un PropertyInfo, on peut obtenir les méthode get et set, mais apparemment pas moyen à partir du get ou du set, d'avoir le PropertyInfo... donc on est obligé de bidouiller avec les nomsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private int x; public int X { get { MethodBase method = MethodBase.GetCurrentMethod(); string propertyName = method.Name.Substring(4); // pour supprimer le préfixe "get_"; Console.WriteLine("Accesseur get de la propriété " + propertyName); return x; } set { MethodBase method = MethodBase.GetCurrentMethod(); string propertyName = method.Name.Substring(4); // pour supprimer le préfixe "set_"; Console.WriteLine("Accesseur set de la propriété " + propertyName); x = value; } }
dommage :S