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

cs_Benouille 216 Messages postés jeudi 24 octobre 2002Date d'inscription 7 septembre 2007 Dernière intervention - 17 août 2004 à 15:50 - Dernière réponse : Kalissi 179 Messages postés jeudi 2 mai 2013Date d'inscription 22 février 2018 Dernière intervention
- 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 

4 réponses

Répondre au sujet
cs_Benouille 216 Messages postés jeudi 24 octobre 2002Date d'inscription 7 septembre 2007 Dernière intervention - 18 août 2004 à 17:19
+3
Utile
laissez tomber je vais faire autrement, je vais utiliser des objets.

Benouille la grenouille :approve)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Benouille
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 17 août 2004 à 19:22
0
Utile
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
cs_Benouille 216 Messages postés jeudi 24 octobre 2002Date d'inscription 7 septembre 2007 Dernière intervention - 17 août 2004 à 19:43
0
Utile
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
Kalissi 179 Messages postés jeudi 2 mai 2013Date d'inscription 22 février 2018 Dernière intervention - Modifié par Kalissi le 9/03/2015 à 15:43
0
Utile
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.