Comment trouver par programmation le nom d'une propriété ?
3 réponses
Gilbert Tordeur
Bonjour.
Contexte : VB2008.
Soit une classe C1 affichant une propriété publique P1.
À partir du code C1.P1 ou similaire, je voudrais récupérer le nom de la
propriété : "P1". Ceci par exemple pour renseigner un DisplayMember d'une
Listbox, ou toute autre chose. De sorte que si l'on renomme un jour P1 en
P2, mon DisplayMember deviendra automatiquement "P2".
Je devine qu'il faut utiliser System.Reflection, mais c'est un tel fouillis
que je ne m'y retrouve pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
eric.delot
Bonjour, je crois que ceci devrait faire l'affaire : System.Reflection.MethodBase.GetCurrentMethod.Name (a voir ...)
Cordialement, Eric.
"Gilbert Tordeur" a écrit dans le message de news:
Bonjour.
Contexte : VB2008.
Soit une classe C1 affichant une propriété publique P1.
À partir du code C1.P1 ou similaire, je voudrais récupérer le nom de la propriété : "P1". Ceci par exemple pour renseigner un DisplayMember d'une Listbox, ou toute autre chose. De sorte que si l'on renomme un jour P1 en P2, mon DisplayMember deviendra automatiquement "P2".
Je devine qu'il faut utiliser System.Reflection, mais c'est un tel fouillis que je ne m'y retrouve pas.
Merci de votre aide, Gilbert
Bonjour,
je crois que ceci devrait faire l'affaire :
System.Reflection.MethodBase.GetCurrentMethod.Name
(a voir ...)
Cordialement,
Eric.
"Gilbert Tordeur" <gilbert.tordeur@orange.fr> a écrit dans le message de
news:OrMIsLiBKHA.5040@TK2MSFTNGP04.phx.gbl...
Bonjour.
Contexte : VB2008.
Soit une classe C1 affichant une propriété publique P1.
À partir du code C1.P1 ou similaire, je voudrais récupérer le nom de la
propriété : "P1". Ceci par exemple pour renseigner un DisplayMember d'une
Listbox, ou toute autre chose. De sorte que si l'on renomme un jour P1 en
P2, mon DisplayMember deviendra automatiquement "P2".
Je devine qu'il faut utiliser System.Reflection, mais c'est un tel
fouillis que je ne m'y retrouve pas.
Bonjour, je crois que ceci devrait faire l'affaire : System.Reflection.MethodBase.GetCurrentMethod.Name (a voir ...)
Cordialement, Eric.
"Gilbert Tordeur" a écrit dans le message de news:
Bonjour.
Contexte : VB2008.
Soit une classe C1 affichant une propriété publique P1.
À partir du code C1.P1 ou similaire, je voudrais récupérer le nom de la propriété : "P1". Ceci par exemple pour renseigner un DisplayMember d'une Listbox, ou toute autre chose. De sorte que si l'on renomme un jour P1 en P2, mon DisplayMember deviendra automatiquement "P2".
Je devine qu'il faut utiliser System.Reflection, mais c'est un tel fouillis que je ne m'y retrouve pas.
Merci de votre aide, Gilbert
Gilbert Tordeur
Impeccable Éric ! Merci beaucoup.
Pour ceux que ça intéresse, voici un exemple (dépouillé) de mise en oeuvre :
La classe : Imports System.Reflection
Public Class CjcCustomer Private CustomerIDPropertyName As String Private CustomerNamePropertyName As String Private m_CustomerID As Integer Private m_CustomerName As String
Public Property CustomerName() As String Get If String.IsNullOrEmpty(CustomerNamePropertyName) Then CustomerNamePropertyName = MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerName End Get Set... End Property
Public Property CustomerID() As Integer Get If String.IsNullOrEmpty(CustomerIDPropertyName) Then CustomerIDPropertyName = MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerID End Get Set... End Property
Public Sub New() Dim x1 = Me.CustomerName ' to fill CustomerNamePropertyName Dim x2 = Me.CustomerID ' to fill CustomerIDPropertyName End Sub
Public Function GetDisplayName() As String Return CustomerNamePropertyName End Function
Public Function GetValueName() As String Return CustomerIDPropertyName End Function End Class
Le code pour garnir une ListBox :
' Soit LstClient As List(Of CjcCustomer), qui contient au moins un élément
Pour ceux que ça intéresse, voici un exemple (dépouillé) de mise en oeuvre :
La classe :
Imports System.Reflection
Public Class CjcCustomer
Private CustomerIDPropertyName As String
Private CustomerNamePropertyName As String
Private m_CustomerID As Integer
Private m_CustomerName As String
Public Property CustomerName() As String
Get
If String.IsNullOrEmpty(CustomerNamePropertyName) Then
CustomerNamePropertyName =
MethodBase.GetCurrentMethod.Name.Substring(4)
End If
Return m_CustomerName
End Get
Set...
End Property
Public Property CustomerID() As Integer
Get
If String.IsNullOrEmpty(CustomerIDPropertyName) Then
CustomerIDPropertyName =
MethodBase.GetCurrentMethod.Name.Substring(4)
End If
Return m_CustomerID
End Get
Set...
End Property
Public Sub New()
Dim x1 = Me.CustomerName ' to fill CustomerNamePropertyName
Dim x2 = Me.CustomerID ' to fill CustomerIDPropertyName
End Sub
Public Function GetDisplayName() As String
Return CustomerNamePropertyName
End Function
Public Function GetValueName() As String
Return CustomerIDPropertyName
End Function
End Class
Le code pour garnir une ListBox :
' Soit LstClient As List(Of CjcCustomer), qui contient au moins un élément
Pour ceux que ça intéresse, voici un exemple (dépouillé) de mise en oeuvre :
La classe : Imports System.Reflection
Public Class CjcCustomer Private CustomerIDPropertyName As String Private CustomerNamePropertyName As String Private m_CustomerID As Integer Private m_CustomerName As String
Public Property CustomerName() As String Get If String.IsNullOrEmpty(CustomerNamePropertyName) Then CustomerNamePropertyName = MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerName End Get Set... End Property
Public Property CustomerID() As Integer Get If String.IsNullOrEmpty(CustomerIDPropertyName) Then CustomerIDPropertyName = MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerID End Get Set... End Property
Public Sub New() Dim x1 = Me.CustomerName ' to fill CustomerNamePropertyName Dim x2 = Me.CustomerID ' to fill CustomerIDPropertyName End Sub
Public Function GetDisplayName() As String Return CustomerNamePropertyName End Function
Public Function GetValueName() As String Return CustomerIDPropertyName End Function End Class
Le code pour garnir une ListBox :
' Soit LstClient As List(Of CjcCustomer), qui contient au moins un élément
Une toute petite correction en bas (faute de frappe) : MaListBox.DisplayMember = LstClient(0).GetDisplayName MaListBox.ValueMember = LstClient(0).GetValueName
Soit l'exemple complet :
La classe : Imports System.Reflection
Public Class CjcCustomer Private CustomerIDPropertyName As String Private CustomerNamePropertyName As String Private m_CustomerID As Integer Private m_CustomerName As String
Public Property CustomerName() As String Get If String.IsNullOrEmpty(CustomerNamePropertyName) Then CustomerNamePropertyName MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerName End Get Set... End Property
Public Property CustomerID() As Integer Get If String.IsNullOrEmpty(CustomerIDPropertyName) Then CustomerIDPropertyName MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerID End Get Set... End Property
Public Sub New() Dim x1 = Me.CustomerName ' to fill CustomerNamePropertyName Dim x2 = Me.CustomerID ' to fill CustomerIDPropertyName End Sub
Public Function GetDisplayName() As String Return CustomerNamePropertyName End Function
Public Function GetValueName() As String Return CustomerIDPropertyName End Function End Class
Le code pour garnir une ListBox :
' Soit LstClient As List(Of CjcCustomer), qui contient au moins un élément
Une toute petite correction en bas (faute de frappe) :
MaListBox.DisplayMember = LstClient(0).GetDisplayName
MaListBox.ValueMember = LstClient(0).GetValueName
Soit l'exemple complet :
La classe :
Imports System.Reflection
Public Class CjcCustomer
Private CustomerIDPropertyName As String
Private CustomerNamePropertyName As String
Private m_CustomerID As Integer
Private m_CustomerName As String
Public Property CustomerName() As String
Get
If String.IsNullOrEmpty(CustomerNamePropertyName) Then
CustomerNamePropertyName MethodBase.GetCurrentMethod.Name.Substring(4)
End If
Return m_CustomerName
End Get
Set...
End Property
Public Property CustomerID() As Integer
Get
If String.IsNullOrEmpty(CustomerIDPropertyName) Then
CustomerIDPropertyName MethodBase.GetCurrentMethod.Name.Substring(4)
End If
Return m_CustomerID
End Get
Set...
End Property
Public Sub New()
Dim x1 = Me.CustomerName ' to fill CustomerNamePropertyName
Dim x2 = Me.CustomerID ' to fill CustomerIDPropertyName
End Sub
Public Function GetDisplayName() As String
Return CustomerNamePropertyName
End Function
Public Function GetValueName() As String
Return CustomerIDPropertyName
End Function
End Class
Le code pour garnir une ListBox :
' Soit LstClient As List(Of CjcCustomer), qui contient au moins un élément
Une toute petite correction en bas (faute de frappe) : MaListBox.DisplayMember = LstClient(0).GetDisplayName MaListBox.ValueMember = LstClient(0).GetValueName
Soit l'exemple complet :
La classe : Imports System.Reflection
Public Class CjcCustomer Private CustomerIDPropertyName As String Private CustomerNamePropertyName As String Private m_CustomerID As Integer Private m_CustomerName As String
Public Property CustomerName() As String Get If String.IsNullOrEmpty(CustomerNamePropertyName) Then CustomerNamePropertyName MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerName End Get Set... End Property
Public Property CustomerID() As Integer Get If String.IsNullOrEmpty(CustomerIDPropertyName) Then CustomerIDPropertyName MethodBase.GetCurrentMethod.Name.Substring(4) End If Return m_CustomerID End Get Set... End Property
Public Sub New() Dim x1 = Me.CustomerName ' to fill CustomerNamePropertyName Dim x2 = Me.CustomerID ' to fill CustomerIDPropertyName End Sub
Public Function GetDisplayName() As String Return CustomerNamePropertyName End Function
Public Function GetValueName() As String Return CustomerIDPropertyName End Function End Class
Le code pour garnir une ListBox :
' Soit LstClient As List(Of CjcCustomer), qui contient au moins un élément