[DotNet] Comment acceder à un objet dynamiquement grâce au System.Reflexion en C#
Voilà je post ce morceau de code parce que dans un premier temps j'ai bien galéré dessus (NooB C#) et parsque je me suis rendu compte qu'il pouvai être très utile a plein de monde.
L'idée de ce code est arrivée a cause (non non pas grâce a cause lol) de Windev.
Nos attentes aux débuts étaient de pouvoir importer des WSDL avec windev et de gérer un webservice comme cela.Premier problème Windev et les WSDL ça marche mais quand ça veut :'(. Du coup on as décider de faire des assembly DotNet grâce a ces WSDL passées en référence web et de les importer dans Windev.
Youuupppiiiiiii ça marche et deux jours après c'était "OU PAS".On as dû fouiller partout (oui beaucoup de classes à gérer) pour trouver d'où venait le problème.
Après une prise de tête monstrueuse de 2 heures, on a trouvé que cela venait du fait que Windev ne prenais pas en compte les membres d'une classe partielle de DotNet (bravo pour de la POO).
Du coup j'ai écrit une classe qui permet d'accéder a une propriété ou une méthode d'une classe présentent dans le projet.
On peut donc y accéder en appelant la méthode voulut de cette classe en passant en paramètre votre objet instancié, une chaine correspondant a notre propriété ou notre méthode et pour la méthode un tableau d'objet qui correspond a nos paramètres.
[code]
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
namespace GetSpeMemberOfObject
{
public class GetSpeMember
{
public static Object GetProperty(Object MonObject, string MonMembre)
{
Type t = MonObject.GetType();
System.Reflection.PropertyInfo f = t.GetProperty(MonMembre);
Object result = f.GetValue(MonObject, null);
return result;
}
public static Object GetMethod(Object MonObject, string MonMembre, Object[] MonTabParam)
{
Type t = MonObject.GetType();
//MessageBox.Show(t.ToString());
System.Reflection.MethodInfo f = t.GetMethod(MonMembre);
//MessageBox.Show(f.ToString());
Object result = f.Invoke(MonObject, MonTabParam);
return result;
}
}
}
[/ code]
Voilà j'attend vos retours :D
PS: il ne faut pas oublier mon collegue Peij qui as beaucoup participer aussi !!!
Votez![]() ![]() ![]() | Billets similaires Un objet qui se dirige vers un point Motor Storm Pacific Rift en démo ce jeudi | Tags System.Reflexion objet propriétés méthodes dynamiquement C# RoUtMoUt | Publicité< |

16 Février 2008
13:17
Hey il faudra que tu boostes Peij pour qu'il s'active ici aussi ;)
16 Février 2008
13:26
Et mon code c'est pas du windev c'est du C# :D
16 Février 2008
18:19
16 Février 2008
20:31
16 Février 2008
22:22
16 Février 2008
22:37
17 Février 2008
1:54
17 Février 2008
12:07
J'espère que je t'aurais éclairé un minimum.
Le but de ce billet n'est pas pour montrer a tout le monde mon code a tout le monde, mais que les gens qui effectuent une recherche sur ce thème d'abord trouve leur réponse, mais aussi arrive sur kookyoo :D.
17 Février 2008
17:14








Ajouter cette page à mes favoris
Envoyer cet article par mail