Login
blog > developpement > [DotNet] Comment acceder à un objet dynamiquement grâce au System.Reflexion en C#

[DotNet] Comment acceder à un objet dynamiquement grâce au System.Reflexion en C#

Posté par : RoUtMoUt - Le Samedi 16 Février 2008 à 12:57

 

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 !!!



Article précédant :
[Outil] Game Maker
Article suivant :
[Tuto] Un terrain 3D à partir d'un bitmap






Commentaires 10 commentaires

Seb le 16 Février 2008 à 13:17

en fait j'y connais si peu à windev que ce code se rapproche (presque) du mandarin pour moi 8-)

Hey il faudra que tu boostes Peij pour qu'il s'active ici aussi ;)

RoUtMoUt le 16 Février 2008 à 13:26

T'inquiet je bouge peij il va pas tarder a poster je lui rappel tout les jours. Mais en ce moment ya la pression au taff donc on a peu de temps.
Et mon code c'est pas du windev c'est du C# :D

Damien le 16 Février 2008 à 18:19

Windev, c#... pareil au meme, préfère le mandarin au moins c'est pas du chinois ! quoi que.

etj le 16 Février 2008 à 20:31

.....?

RoUtMoUt le 16 Février 2008 à 22:22

oui ???

Seb le 16 Février 2008 à 22:37

En tout cas j'espère que ça pourra servir à d'autres. Et merci à toi routmout :)

etj le 17 Février 2008 à 1:54

dsl a pas compris. Menfin si on m'explique brievement...

RoUtMoUt le 17 Février 2008 à 12:07

En gros dans la programmation orientée objet tu as ce qu'on appelle des classes qui ont des méthodes et des propriétés. En gros lorsque tu doit remplir un nombre de variables portant sur un même élément a la place de tous les marqués a la main, tu écrit une classe. Les propriétés sont tes variables, et les méthodes sont des fonctions qui permettent de remplir ces variables ou de faire des opérations (sa ressemble au maths lol). Du coup avec mon code tu peut acceder a n'importe quel membre ou propriété grâce a une valeur. Ce qui te permet si tu ne peut pas la voir (explication rapide) d'y accéder quand même.
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.

etj le 17 Février 2008 à 17:14

OK, je vois un peu mieux ! Merci de l'explication.

ssslokesh005 le 04 Novembre 2015 à 11:06

I like your blog. Do you need more information about this
Tableau Online Training with placement support



.laisser un commentaire




Codes html interdits. Les liens sont convertis automatiquement.

Réalisation

Code & Design : Sébastien Cardona

Page générée en : 0.099048s