OVH Cloud OVH Cloud

question pour ecriture d'une classe

2 réponses
Avatar
Vincent
bonjour,
dans le constructeur d'une classe, comment puis-je enumérer les variables
pour leur attribuer une valeur?
(plutot que de le faire variable par variable)

Public Class MaClasse

Dim MaVariable as String
Dim MaVariable1 as String
Dim MaVariable2 as String
Dim MaVariable3 as String

Public Sub New(ByVal MaValeur as string)
'recherche dans une base de données obtention d'un datarow en
resultat

'ICI je voudrais qq chose comme
for each machin in me
me("nom de mavariable i")=valeurdatarow(demavariable i)
next
End Sub

Function MaFonction() As Boolean
...
End Function
End Class



merci pour les infos!

Vincent

2 réponses

Avatar
Fabien Bezagu
Vincent,

Cette technique s'appelle la réflexion. Tu peux ainsi obtenir toutes les
informations sur un type dynamiquement.

Pour ton exemple, quelque chose comme ceci devrait faire l'affaire :

Dim i As Integer = 1

For Each field As FieldInfo In Me.GetType.GetFields(BindingFlags.NonPublic
Or BindingFlags.Instance)
field.SetValue(Me, i)
i += 1
Next

Fabien

"Vincent" a écrit dans le message de news:
df9pf6$vju$
bonjour,
dans le constructeur d'une classe, comment puis-je enumérer les variables
pour leur attribuer une valeur?
(plutot que de le faire variable par variable)

Public Class MaClasse

Dim MaVariable as String
Dim MaVariable1 as String
Dim MaVariable2 as String
Dim MaVariable3 as String

Public Sub New(ByVal MaValeur as string)
'recherche dans une base de données obtention d'un datarow en
resultat

'ICI je voudrais qq chose comme
for each machin in me
me("nom de mavariable i")=valeurdatarow(demavariable i)
next
End Sub

Function MaFonction() As Boolean
...
End Function
End Class



merci pour les infos!

Vincent



Avatar
Vincent
Merci beaucoup Fabien

c'est vrai qu'avec un peu de reflexion...
;)

"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:

Vincent,

Cette technique s'appelle la réflexion. Tu peux ainsi obtenir toutes les
informations sur un type dynamiquement.

Pour ton exemple, quelque chose comme ceci devrait faire l'affaire :

Dim i As Integer = 1

For Each field As FieldInfo In Me.GetType.GetFields(BindingFlags.NonPublic
Or BindingFlags.Instance)
field.SetValue(Me, i)
i += 1
Next

Fabien

"Vincent" a écrit dans le message de news:
df9pf6$vju$
bonjour,
dans le constructeur d'une classe, comment puis-je enumérer les variables
pour leur attribuer une valeur?
(plutot que de le faire variable par variable)

Public Class MaClasse

Dim MaVariable as String
Dim MaVariable1 as String
Dim MaVariable2 as String
Dim MaVariable3 as String

Public Sub New(ByVal MaValeur as string)
'recherche dans une base de données obtention d'un datarow en
resultat

'ICI je voudrais qq chose comme
for each machin in me
me("nom de mavariable i")=valeurdatarow(demavariable i)
next
End Sub

Function MaFonction() As Boolean
...
End Function
End Class



merci pour les infos!

Vincent