golden19
Messages postés7Date d'inscriptionjeudi 12 juin 2008StatutMembreDernière intervention 9 décembre 2011
-
9 déc. 2011 à 19:17
NHenry
Messages postés15156Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 septembre 2024
-
10 déc. 2011 à 16:18
Bonjour,
Je souhaite obtenir le nom en chaine string d'un attribut ou d'une propriété.
J'ai trouvé ce code et il fonctionne.
Check(Function() <>)
Private Shared Sub Check(Of T)(expr As Expression(Of Func(Of T)))
Dim body = DirectCast(expr.Body, MemberExpression)
MsgBox("Name is: " & body.Member.Name)
End Sub
Le seul hic, je voudrais mettre ce code dans une sous-fonction et passer mon attribut ou ma propriété en référence. Quand j'essais, j'obtiens un erreur à cause du ByRef. Quelqu'un aurais une alternative à me proposer?
NHenry
Messages postés15156Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 septembre 2024159 9 déc. 2011 à 19:26
Bonjour,
Peux-tu fournir un exemple plus parlant stp ?
Sinon, as-tu regardé du coté de Reflection ?
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
golden19
Messages postés7Date d'inscriptionjeudi 12 juin 2008StatutMembreDernière intervention 9 décembre 2011 9 déc. 2011 à 19:35
Par réflexion, je peux obtenir la liste complète des propriétés de ma classe en format string. Mais dans mon cas, je veux seulement le nom de celle modifié.
Voici du code plus parlant,
Merci,
Public Class Class1
Private atoto As String
Private atoto2 As String
Public Property toto As String
Get
Return atoto
End Get
Set(value As String)
SetValeur(atoto, value)
End Set
End Property
Public Property toto2 As String
Get
Return atoto2
End Get
Set(value As String)
SetValeur(atoto2, value)
End Set
End Property
Public Sub SetValeur(ByRef propriete As String, ByVal val As String)
Dim expr As Expression(Of Func(Of String)) = CType(Function() propriete, Expression(Of Func(Of String)))
Dim body = DirectCast(expr.Body, MemberExpression)
MsgBox("Name is: " & body.Member.Name)
NHenry
Messages postés15156Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 septembre 2024159 10 déc. 2011 à 16:18
Bonjour,
C'est bien ce que je pensais.
Ça fonctionne avec une variable, mais avec une propriété, je crois que seul Reflection pourra t'aider.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site