Accueil > Forum > > > > Obtenir le nom de la méthode
Obtenir le nom de la méthode
jeudi 12 avril 2007 à 22:44:41 |
Obtenir le nom de la méthode

kiboumz
|
Bonjour,
J'aimerais pouvoir accèder à certaines caractéristiques d'une méthode.
J'ai commencé à regarder du côté de system.reflection.methodbase.GetCurrentMethod()
Cela me donne beaucoup d'info, mais j'ai de la difficultés à filter l'information.
1. Je voudrais le nom de la méthode : MethodBase.Name
2. Je voudrais la porté d'une méthode (public / private) : Je sais pas comment ...
3. Je voudrais le type méthode ou fonction : Je sais pas comment ...
4. Je voudrais le nom des paramètres : MethodBase.GetParameters(index).Name
5. Je voudrais la valeur des paramètres : Je sais pas comment ...
6. Je voudrais savoir si les paramètres sont ByVal ou ByRef : Je sais pas comment ...
En fait en premier je voudrais reconstituer le nom de la méthode / fonction et ensuite obtenir les valeurs des paramètres ...
Merci
a+
|
|
jeudi 12 avril 2007 à 23:58:04 |
Re : Obtenir le nom de la méthode

Julien237
|
Salut, Alors pour la portée d'un méthode, tu as MethodBase.Attributes ou bien encore plus simple MethodBase.IsPublic, IsPrivate....
Pour le type, on peut utiliser une astuce. MethodBase ne contient pas cette information, mais bien MethodInfo. Il s'agit d'utiliser les informations de MethodBase pour retrouver le MethodInfo par le type de la classe déclarant MethodBase :
Dim mb As System.Reflection.MethodBase = System.Reflection.MethodBase.GetCurrentMethod() Dim mbArgTypes(mb.GetParameters.Length - 1) As System.Type For i As Integer = 0 To mb.GetParameters.Length - 1 mbArgTypes(i) = mb.GetParameters(i).ParameterType Next MsgBox("Type de renvoi : " & mb.DeclaringType.GetMethod(mb.Name, mbArgTypes).ReturnType.ToString)
Simplement, je recherche une méthode ayant le même nom et la même signature que la MethodBase en cours.
Pour ce qui est des paramètres, je ne comprends pas bien ce que tu veux dire. Les objets MethodBase et MethodInfo donne des informations sur les méthodes en général, sur leur code, mais pas sur "l'instance de la méthode en cours d'exécution" si je puis dire... Au mieux, tu peux avoir les valeurs par défault des paramètres (mb.GetParameters(i).DefaultValue), mais pour leurs valeurs en cours, il faudra trouver autre chose...
Pour le (byref/byval) des paramètres, je trouve pas, mais j'en suis étonné... Pourtant on doit chauffer, ca doit pas être bien loin...
Julien.
|
|
vendredi 13 avril 2007 à 15:47:52 |
Re : Obtenir le nom de la méthode

kiboumz
|
Salut,
En fait, pour les paramètres, je voulais avoir leurs valeurs pour la raison suivante :
La raison pourquoi je veux reconstituer la fonction est que dans un try catch quand j'obtiens une erreur j'appel une fonction EcrireErreur.
Je passe à cette fonction : System.Reflection.MethodBase.GetCurrentMethod()
Ensuite, je voudrais écrire dans un fichier le plus d'information relative à l'erreur. En autre, le nom de la méthode qui a crée l'erreur et la valeur de ces paramètres ...
Je ne voulais pas avoir à passer par exemple EcrireErreur(NomMethode, tValeursParametres) ... Je trouve cela plus générique si je ne peux que passer une seule valeur ...
Si vous avez des suggestions, n'hésitez pas!
Merci a+
|
|
vendredi 13 avril 2007 à 17:44:11 |
Re : Obtenir le nom de la méthode

Julien237
|
Mais, le System.Reflection.MethodBase.GetCurrentMethod(), tu le passe en paramètre de EcrireErreur alors ? Sinon tu obtines la Méthode EcrireErreur et non la méthode en cours pendant l'erreur... Je réfléchis pour les paramètres, mais je pense de moins en moins que ce soit possible, les paramètres sont traités comme des simples variables locales popées de la pile en entrant dans la méthode, je sais pas si y'a un moyen de les distinguer et des les récup comme ca...
Julien.
|
|
vendredi 13 avril 2007 à 17:52:03 |
Re : Obtenir le nom de la méthode

kiboumz
|
Salut,
Effectivement, je passse le System.Reflection.MethodBase.GetCurrentMethod() à EcrireErreur.
Pour les paramètres, peut-être qu'avec le Reflection on peut pas, mais il y a peut-être un autre moyen ...
Merci a+
|
|
vendredi 13 avril 2007 à 18:47:47 |
Re : Obtenir le nom de la méthode

Julien237
|
Ha j'ai trouvé pour le byval/byref, Lorsque tu demande Dim mb As System.Reflection.MethodInfomb = System.Reflection.MethodBase.GetCurrentMethod.DeclaringType.GetMethod(System.Reflection.MethodBase.GetCurrentMethod.Name) Dim paramlist As System.Reflection.ParameterInfo()paramlist = mb.GetParameters MsgBox(paramlist(0).ParameterType.ToString) Selon que le paramètre soit byref ou byval il y a l'opérateur & derrière le type écrit comme l'opérateur de pointeur en C finalement... Donc pour ByRef param as Integer -> System.Int32& ByVal param as Integer -> System.Int32 Julien.
|
|
vendredi 13 avril 2007 à 19:28:37 |
Re : Obtenir le nom de la méthode

kiboumz
|
Salut,
Si je résume j'ai ceci comme code :
lcError &= IIf(poMethodBase.IsPrivate, "Private ", "Public ")
lcError &= poMethodBase.Name & " (" 'Dim mbArgTypes(poMethodBase.GetParameters.Length - 1) As System.Type 'For i As Integer = 0 To poMethodBase.GetParameters.Length - 1 ' mbArgTypes(i) = poMethodBase.GetParameters(i).ParameterType 'Next 'lcError &= poMethodBase.DeclaringType.GetMethod(poMethodBase.Name, mbArgTypes).ReturnType.ToString
For liParameters As Integer = 1 To poMethodBase.GetParameters().Length If liParameters > 1 Then lcError &= ", " End If lcError &= IIf(Right(poMethodBase.GetParameters(liParameters - 1).ParameterType().ToString(), 1) = "&", "ByRef ", "ByVal ") lcError &= poMethodBase.GetParameters(liParameters - 1).Name & " As " lcError &= poMethodBase.GetParameters(liParameters - 1).ParameterType.ToString() lcError = IIf(Right(poMethodBase.GetParameters(liParameters - 1).ParameterType().ToString(), 1) = "&", lcError.Substring(0, lcError.Length - 1), lcError.Substring(0, lcError.Length)) Next lcError &= ")" lcError &= Environment.NewLine()
Le code en commentaire est celui supposé me dire si c'est une fonction ou un sub, mais cela ne fonctionne pas.
Pour l'instant si j'ai une fonction par exemple qui appel ma méthode : private sub Main(byval test1 as string, byref test2 as integer)
Je la reconstruit comme suit : Private Main (ByVal test1 As System.String, ByRef test2 As System.Int32)
Donc, il me manque le type (fonction ou méthode) et si possible, faudrait trouvé une manière de pouvoir avoir les valeurs des paramètres ...
Merci! a+
|
|
Cette discussion est classée dans : name, obtenir, méthode, paramètres, methodbase
Répondre à ce message
Sujets en rapport avec ce message
Obtenir le nom des paramètres d'une procédure stockée [ par IdrilElendil ]
Bonjour,J'aimerais savoir comment il faut faire pour obtenir la liste des noms des paramètres d'une procédure stockée se trouvant sur un serveur SQL-S
Drawline et paramètres [ par chewbaka62 ]
Bonsoir, je suis en train de réaliser un petit programme graphique représentant une horloge analogique.Les aiguilles sont faites en utilisant la méth
Obtenir la liste des meilleurs joueurs [ par ShayW ]
Bonjour à tous J'ai deux tableaux 1 avec liste des joueur tbljoueur avec comme champs codejoueur (clé) name surname 2 un tableau des résultat
Paramètres à mémoriser DANS le code d'une macro Excel [ par Iragael ]
Bonjour,je viens de réaliser une macro d'archivage auto de fichier incluant une date dans le nom de fichier et n'intervenant que selon un rythme prédé
Attendre entre 2 actions [ par kiboumz ]
Bonjour,J'aimerais savoir comment faire pour attendre un certain lap de temps entre 2 actions. J'avais pensé utilisé la méthode sleep (de thread), mai
Problème de références [ par azerty25 ]
Bonjour J'aimerai pouvoir assigner à une variable la référence d'un objet de l'arraylist afin de pouvoir modifier cet objet grâce à cette variable. L
[VBScript] Ajout de méthode avec FSO ? [ par Coke Hax ]
Salut !Je suis nouveau ici, mais je fais du VBScript depuis environ un an et demi.Je me demandais si c'était possible de créer une nouvelle méthode av
Suppresion d'un fichier contenant une date [ par spike13127 ]
Bonjour, voila je travail sur une application sur Excel, et j'ai un problème.Voilà mon problème moi j'aimerai bien qu'a chaque fois que j'enregistre m
Plusieurs paramètres dans une propriétées. [ par DavidWhitewater ]
Bonjour à tous, Certaine propriétés ont plusieurs paramètres (par exemple dans la catégorie 'disposition' la propriétées 'Location' possède 'x' et 'y'
Quel méthode de connexion pour une base access ? [ par Robinwood01 ]
BonjourJe me remet a programme en VB 6 après avoir arrêté quelques temps.Je dois faire un programme avec une base access pour gèrer le personnel d'une
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|