[VB NET] Comment trouver les propriétés d'une classe par le code? [Résolu]

Signaler
Messages postés
215
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
7 septembre 2007
-
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
-
bjour a tous,

je crée des classes qui contiennent les données dont j'ai besoin et qui sont alimentées par une base de données par les méthodes qui vont bien a l'instanciation de l'objet.

je veux faire un moteur d'affichage qui m'affiche l'objet créé en fonction des propriétés de l'objet:
par exemple si j'ai un objet client qui contient la propriété NOM, une propriété LISTCOMM liste des commandes en cours et une méthode RAPPEL pour lui dire de payer, je veux que mon afficheur VB puisse parcourir l'objet,
y trouver NOM et afficher par exemple un label de text NOM + une textbox avec son nom, une liste Titrée LISTCOMM et la liste en Question, et enfin un Label cliquable de texte RAPPEL.

bien évidemment j'ai plusieurs objets tous différend mais contenant tous le meme genre de propriétés/méthodes ( comme 0, un ou plusieurs string, une ou plusieurs liste , ...) le but étant de les afficher par une méthode unique grace a mon afficheur.

le code pour retrouver ces propriétés doit donc être du genre
dim cli1 as client = new client.getclient (id) 'getclient rempli l'objet en fonction de l'id passé

for each Prprte in cli1.properties
'la fonction affiche le controle suivant le type du controle _
en question (text box ou liste ...) parmi les types prédéfinis
AfficheControle (Prprte)
next Prprte

j'espère avoir été clair et si oui merci de me répondre a la question suivante:
(b]comment on voit la liste des propriétés d'un objet dans le code ?

merci

Benouille la grenouille :approve)
/b

4 réponses

Messages postés
215
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
7 septembre 2007
1
laissez tomber je vais faire autrement, je vais utiliser des objets.

Benouille la grenouille :approve)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Je pense que tu veux utilises la relexion de dotnet

alors
Type --> Classe
Method --> Methodes
fiels--> Proprietes
paramater --> parametres

http://my.execpc.com/~gopalan/dotnet/reflection.html

voila

Bonne prog
Messages postés
215
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
7 septembre 2007
1
désolé j'ai cherché sur type, j'ai regardé la reflection qui permet les liaisons tardives mais je trouve pas ce que je veux:

pour voir sortir la liste des attributs d'un objet dans le code
par exemple que pour un controle de base (textbox) il me liste:
name
text
backcolor
...

exemple pour lister tous les controles d'un formulaire:
Dim ctrl As Control
For Each ctrl In Me.Controls
MsgBox(ctrl.Name.ToString)
Next

et bin je veux la meme chose pour lister tous les attributs d'un controle

simple non?

[size=7]HELPPPPPPPPP!!!!!!!!!!!!!!!!!!!!! /size=7

Benouille la grenouille :approve)
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019

Bonjour,

J'ai moi-même eu besoin de parcourir les propriétés d'une classe,
alors voici mon Code VB.NET ...


Private Function LireProprietes() As IList(Of String)

Dim objRetour As IList(Of String) = New List(Of String)
Dim Valeur As String = String.Empty
Dim ValNomPro As String = String.Empty
Dim ValValPro As String = String.Empty

For Each Ent As Video In LsEntite
For Each info As System.Reflection.PropertyInfo In Ent.GetType().GetProperties()
If info.CanRead Then
Valeur = (String.Format("{0} : {1}", info.Name, info.GetValue(Ent, Nothing)))
Dim ValInfo As Object = info.GetValue(Ent, Nothing).ToString
If (ValInfo IsNot Nothing) Then
If (Not String.IsNullOrEmpty(ValInfo.ToString)) Then
ValNomPro = info.Name
ValValPro = ValInfo.ToString
End If
End If
objRetour.Add(Valeur)
End If
Next
Next

Return objRetour

End Function


note particulière :

la valeur info.GetValue(Ent, Nothing), doit impérativement être
envoyé dans un objet et cette objet doit être testé avant son utilisation.

K