Connaitre les types utilisés dans une classe

Signaler
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010
-
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010
-
Bonjour
J'ai une classe que je voudrais dupliquer (une classe du framework pour ne rien cacher :) et je voudrais connaitre les classes utilisées dedans pour les importer aussi avec. Le tout bien entendu sans avoir à eplucher le code ligne par ligne (vraiment trop long ...). J'ai essayé de trouver un addin pour le clebre Reflector mais aucun ne va chercher les fichier des classes utilisées.
Si quelqu'un a une idée ca serait sympa.
Merci d'avance.

11 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
fait plutot un héritage qu'une copie

classs MaForm : System.Windows.form
{

}

tu as tout et tu peux tout uitiliser et rajouter ce que tu veux, c'est le plus propre


Be happy , by
Tao
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010

Si j'avais voulu faire de l'héritage je l'aurais fait.
Ce que je cherche c'est bien copier les différentes classes utilisées.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Tu ne peux pas obtenir tout ce dont tu as besoin par reflexion ?
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, si j'ai bien compris c'est ça que tu veux ( surtout les "GetNestedTypes" ) :

Type t = typeof( Form );
Type baseTypes = t.BaseType; // renvoie null pour la classe object
Type[ ] nestedTypes = t.GetNestedTypes( );
Type[ ] interfaces = t.GetInterfaces( );
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010

Ca n'a pas l'air de bien fonctionner, essaye ton code sur la classe System.Windows.Forms.Control et tu veras que ca ne fonctionne pas.
Pour ce qui est de la reflection je ne m'y connais pas trop, alors ........
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Ca ne fonctionne pas, peux tu être plus précis.. !?

Pour les types non publics faut rajouter un flag, c'est valable pour les types mais pour les membres y'a encore d'autres flags à rajouter.

Type[ ] nestedTypes = t.GetNestedTypes( BindingFlags.Public | BindingFlags.NonPublic );
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Salut,

A mon avis il ne parle pas des types nested

public class Control
{
public class NestedType
{
}

public Control()
{
}
}

mais plutôt de savoir quels types sont utilisés comme membres, dans les corps de méthodes, etc

En gros de créer une liste des dépendances
C'est bien ça ?

/*
coq
MVP Visual C#
*/
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Tu as peut être bien raison ; )

Pour connaitre les membres de la classe c'est possible avec FindMembers mais après connaitres toutes les dépendances, dans les methodes etc.. je sais pas, j'ai pas regardé..

Type t = typeof( MyClass );
MemberInfo[ ] infos = t.FindMembers
(
MemberTypes.All,
BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.Public |
BindingFlags.NonPublic,
null,
null
);
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010

Oui ca serais bien ca coq
A la limite pas forcement les types dans le corps des methodes/membres mais au moins les types utilisés comme detour des methodes et ceux utilisés dnas les parametres.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Pour les corps de méthode ça doit être faisable via CodeDOM & co.

Pour les types de retour, paramètres des méthodes, GetMethods ou GetMethod te permettent d'obtenir l'instance de la classe MethodInfo décrivant la méthode, et exposant notamment la propriété ReturnType et la méthode GetParameters.

/*
coq
MVP Visual C#
*/
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010

Je vais faire quelques essais avec ces infos voir si je trouve mon bonheur ^^
Merci pour vos réponses.