Vous n'êtes pas identifié visiteur. Se connecter

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




Vidéos en lien sur kookyoo.tv :

MotorStorm Pacific...

Warhammer Online :...

BioShock PS3 : Fort...






Kookyoo Prod. 2007
Code & Design : Sébastien Cardona
A propos - Devenir partenaire - Contact