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

Messages postés
216
Date d'inscription
jeudi 24 octobre 2002
Dernière intervention
7 septembre 2007
- - Dernière réponse : Kalissi
Messages postés
197
Date d'inscription
jeudi 2 mai 2013
Dernière intervention
10 janvier 2019
- 9 mars 2015 à 15:42
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
216
Date d'inscription
jeudi 24 octobre 2002
Dernière intervention
7 septembre 2007
3
Merci
laissez tomber je vais faire autrement, je vais utiliser des objets.

Benouille la grenouille :approve)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Benouille
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
22
0
Merci
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
Commenter la réponse de nhervagault
Messages postés
216
Date d'inscription
jeudi 24 octobre 2002
Dernière intervention
7 septembre 2007
0
Merci
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)
Commenter la réponse de cs_Benouille
Messages postés
197
Date d'inscription
jeudi 2 mai 2013
Dernière intervention
10 janvier 2019
16
0
Merci
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
Commenter la réponse de Kalissi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.