OVH Cloud OVH Cloud

mécanisme de réflexion

7 réponses
Avatar
Elderion
Je voudrais savoir comment je peux afficher les [propriétés + valeur] d'une
classe particulière

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

7 réponses

Avatar
Elderion
Je ré itère mon problème de facon plus claire

Je travaille en C# pour Pocket PC - donc avec le .Net Compact Framework.

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.

J'ai trouvé un article tres bien mais dont l'exermple n'est pas supporté par
le Compact Framework :
http://emerica.developpez.com/dotnet/reflection/introduction/csharp/

Je cherche donc une alternative en Compact Framework.
Avatar
Francois Muller
Bonjour

"Elderion" a écrit dans le message de news: %
J'ai trouvé un article tres bien mais dont l'exermple n'est pas supporté
par le Compact Framework :
http://emerica.developpez.com/dotnet/reflection/introduction/csharp/

Je cherche donc une alternative en Compact Framework.



Dans l'exemple, qu'est ce qui n'est pas supporté par le CF ?

Car, par exemple,les classes FieldInfo, PropertyInfo, ainsi que la méthode
GetTypes de la classe Assembly qui sont celles qui semblent devoir
t'intéresser, sont prises en charge presque entièrement par le CF.

F.
Avatar
Elderion
finalement je souhaite me baser sur le code suivant (issu d'un article de
developpeurs.journaldunet.com), qui me parait plus clair, mais
AppDomain.CurrentDomain n'existe pas

pour AppDomain, jen'ai droit qu'au membre "CreateDomain" au lieu de
"CurrentDomain".
c donc ca qui me bloque.

code:

using System;
using System.Reflection;

class TestReflexion {
public static void Main()
{
foreach(Assembly asm in AppDomain.CurrentDomain.GetAssemblies() )
{
if (asm.GetName().Name != "mscorlib")
{

foreach (Type ty in asm.GetTypes() )
{
Console.WriteLine("Classe : " + ty);

foreach (MethodInfo mi in ty.GetMethods() )
{
Console.WriteLine(" Méthode : " + mi);

foreach (ParameterInfo pi in
mi.GetParameters() )
{
Console.WriteLine(" Paramètre : " +
pi.GetType() );
}
}
}
}
}
}



"Francois Muller" a écrit dans le message de
news:
Bonjour

"Elderion" a écrit dans le message de news: %
J'ai trouvé un article tres bien mais dont l'exermple n'est pas supporté
par le Compact Framework :
http://emerica.developpez.com/dotnet/reflection/introduction/csharp/

Je cherche donc une alternative en Compact Framework.



Dans l'exemple, qu'est ce qui n'est pas supporté par le CF ?

Car, par exemple,les classes FieldInfo, PropertyInfo, ainsi que la méthode
GetTypes de la classe Assembly qui sont celles qui semblent devoir
t'intéresser, sont prises en charge presque entièrement par le CF.

F.




Avatar
Francois Muller
"Elderion" a écrit dans le message de news:
finalement je souhaite me baser sur le code suivant (issu d'un article de
developpeurs.journaldunet.com), qui me parait plus clair, mais
AppDomain.CurrentDomain n'existe pas



Je ne comprends pas pourquoi tu souhaites balayer l'ensemble des Assembly,
dans la mesure où, dans ton premier post, tu précise que tu ne veux que
lister les propriétés d'une classe particulières. Donc, le listage de
l'ensemble des Assembly ne t'est visiblement pas nécessaire.

F.
Avatar
Elderion
peu m'importe en fait la maniere de faire.
tout ce que je souhaite faire c'est de lister (dans un MessageBox par ex)
les membres, valeurs de membres et methodes d'une classe en particulier de
mon application Pocket PC.
Et dans un 2e temps je cherche le moyen de modifier la valeur de ces membres
pendant le listage.

Je veux bien etudier tout type de code.

Aurais tu un code ou un tutoriel a me proposer ?

Merci


"Francois Muller" a écrit dans le message de
news:

"Elderion" a écrit dans le message de news:
finalement je souhaite me baser sur le code suivant (issu d'un article de
developpeurs.journaldunet.com), qui me parait plus clair, mais
AppDomain.CurrentDomain n'existe pas



Je ne comprends pas pourquoi tu souhaites balayer l'ensemble des Assembly,
dans la mesure où, dans ton premier post, tu précise que tu ne veux que
lister les propriétés d'une classe particulières. Donc, le listage de
l'ensemble des Assembly ne t'est visiblement pas nécessaire.

F.




Avatar
Francois Muller
"Elderion" a écrit dans le message de news: %
Aurais tu un code ou un tutoriel a me proposer ?



Ben si tu as une classe X dans un espace de nom NS, tu faits :

Type myType = Type.GetType ("NS.X.");

Puis la suite comme dans ton exemple :

Console.WriteLine("Classe : " + myType );

foreach (MethodInfo mi in myType .GetMethods() )
{
Console.WriteLine(" Méthode : " + mi);

foreach (ParameterInfo pi in
mi.GetParameters() )
{
Console.WriteLine(" Paramètre : " +
pi.GetType() );
}
}

F.
Avatar
Elderion
ok merci

ben en fait en faisant un mix entre le code que tu viens de me donner et
quelques syntaxes persos en + ca mzrche nickel

merci !


"Francois Muller" a écrit dans le message de
news:

"Elderion" a écrit dans le message de news: %
Aurais tu un code ou un tutoriel a me proposer ?



Ben si tu as une classe X dans un espace de nom NS, tu faits :

Type myType = Type.GetType ("NS.X.");

Puis la suite comme dans ton exemple :

Console.WriteLine("Classe : " + myType );

foreach (MethodInfo mi in myType
.GetMethods() )
{
Console.WriteLine(" Méthode : " + mi);

foreach (ParameterInfo pi in
mi.GetParameters() )
{
Console.WriteLine(" Paramètre : " +
pi.GetType() );
}
}

F.