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

Résolu
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007 - 17 août 2004 à 15:50
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 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

4 réponses

cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
18 août 2004 à 17:19
laissez tomber je vais faire autrement, je vais utiliser des objets.

Benouille la grenouille :approve)
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 août 2004 à 19:22
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
0
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
17 août 2004 à 19:43
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)
0
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019
Modifié par Kalissi le 9/03/2015 à 15:43
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
0
Rejoignez-nous