mécanisme réflexion

mécanisme réflexion - C#/.NET managed - Programmation

Marsh Posté le 27-09-2005 à 13:03:32    

Je voudrais savoir comment je peux afficher les [propriétés + valeur] d'une  
classe particulière de mon application
 
Et surtout comment réaffecter la valeur de ces propriétés.
 
En lecture, c a dire afficher la liste des propriétés je pense que ca doit  
pas être très compliqué, mais pour réaffecter les propriétés de ladite  
classe dans la meme boucle que celle de l'affichage ...
 
Merci par avance pour un coup de main
 
si je suis pas clair dites le  :D

Reply

Marsh Posté le 27-09-2005 à 13:03:32   

Reply

Marsh Posté le 27-09-2005 à 15:16:58    

je vais tacher d'etre plus  clair
Je travaille en C# pour Pocket PC
 
je voudrais parcourir la liste des membres d'une classe de mon application, de facon physique (afin de pouvoir agir en écriture sur eux) et affecter une valeur à chaque membre, valeur issue d'une base de données.
 
il faut que je puisse parcourir cette liste, car il est possible que des membres soient ajoutés.
je ne peux donc pas appeler en dur la liste des membres.
 
Comment je peux faire ca dans les grandes lignes ?


Message édité par jokari34 le 27-09-2005 à 15:19:36
Reply

Marsh Posté le 04-10-2005 à 16:17:34    

Pour analyser et modifier un object obj
1 - Récupérer le type de l'objet
Type type = obj.GetType();
 
2 - Pour avoir la liste de ses propriétés :
PropertyInfo []propz = type.GetProperties(...);
- Les options en paramètres dépendent de ce que tu veux : (public/protégées, Instance/statiques, héritée ou déclarée, ...) Voir la doc de .Net
- Pour la liste de méthodes, c'est pareil avec MethodInfo . Pour les champs FieldInfo.
 
3 - Pour récupérer une valeur : GetValue(...)
PropertyInfo prop = ...
object value = prop.GetValue(obj, null);

 
4 - Pour modifier une valeur : SetValue(...)
PropertyInfo prop = ...
prop.SetValue(obj, value, null);

 
Bon, c'est les grandes lignes, après ça marche plus ou moins pareil pour les différents membres d'une classe.
 
  Mose

Reply

Marsh Posté le 04-10-2005 à 16:22:35    

merci bien
j'ai adapté et ca marche

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed