Je souhaite générer une liste de toutes les méthodes d'une classe ou d'un répertoire de classes. J'ai aussi besoin de leurs types de retour. La sortie dans un fichier texte fera l'affaire ... Est-ce que quelqu'un connaît un outil, un raccord pour VS ou quelque chose qui va faire la tâche? Im en utilisant les codes C# par ailleurs et Visual Studio 2008 comme IDEGénérer Liste des méthodes d'une classe avec les types de méthodes
Répondre
Bien sûr, utilisez Type.GetMethods(). Vous souhaitez spécifier différents drapeaux de liaison pour obtenir des méthodes non publiques, etc. Ceci est un peu brut, mais le point de départ pratique:
using System;
using System.Linq;
class Test
{
static void Main()
{
ShowMethods(typeof(DateTime));
}
static void ShowMethods(Type type)
{
foreach (var method in type.GetMethods())
{
var parameters = method.GetParameters();
var parameterDescriptions = string.Join
(", ", method.GetParameters()
.Select(x => x.ParameterType + " " + x.Name)
.ToArray());
Console.WriteLine("{0} {1} ({2})",
method.ReturnType,
method.Name,
parameterDescriptions);
}
}
}
Sortie:
System.DateTime Add (System.TimeSpan value)
System.DateTime AddDays (System.Double value)
System.DateTime AddHours (System.Double value)
System.DateTime AddMilliseconds (System.Double value)
System.DateTime AddMinutes (System.Double value)
System.DateTime AddMonths (System.Int32 months)
System.DateTime AddSeconds (System.Double value)
System.DateTime AddTicks (System.Int64 value)
System.DateTime AddYears (System.Int32 value)
System.Int32 Compare (System.DateTime t1, System.DateTime t2)
System.Int32 CompareTo (System.Object value)
System.Int32 CompareTo (System.DateTime value)
System.Int32 DaysInMonth (System.Int32 year, System.Int32 month)
(etc)
Surintéressé, cela retourne-t-il toutes les méthodes du type courant ou inclut-il aussi toutes les méthodes publiques de ses classes parentes? –
@ LoïcFaure-Lacroix: Il y a un moyen très simple de le tester :) (Je ne m'en souviens pas moi-même, mais c'est facile à tester ...) –
ok, j'ai fait quelques essais. Je suis sûr qu'il montre toutes les méthodes publiques. Cependant, il semble y avoir un attribut "DeclaringType" qui semble être le type qui a déclaré la méthode. Donc, si quelqu'un veut filtrer sur un objet particulier dans la hiérarchie, cela devrait être possible. –
Vous pouvez obtenir ces listes très facilement avec la réflexion. par exemple. avec Type.GetMethods()
using (StreamWriter sw = new StreamWriter("C:/methods.txt"))
{
foreach (MethodInfo item in typeof(MyType).GetMethods())
{
sw.WriteLine(item.Name);
}
}
- 1. Générer automatiquement des implémentations de méthodes de classe de base
- 2. Comment remplacer les méthodes de types imbriqués?
- 3. Méthodes et types anonymes
- 4. Utiliser "devrait" avec les méthodes de classe?
- 5. Comment générer un lambda compilé avec des appels de méthodes?
- 6. Ignorer les méthodes sur les types d'entités avec NHibernate
- 7. Classe WCF DataContract avec méthodes
- 8. Méthodes d'instance appelant des méthodes de classe appelant des méthodes d'instance
- 9. méthodes génériques dans les types non génériques
- 10. Ajout de méthodes aux types nullables
- 11. Appelez les méthodes de la classe mootools
- 12. Utilisation des accesseurs dans les méthodes de classe
- 13. Groovy: générer des égaux et des méthodes hashCode
- 14. Ordre de priorité avec des méthodes?
- 15. Noms de méthodes pour les méthodes d'opérateur en C#
- 16. Redéfinir les méthodes de classe ou la classe
- 17. Performance de l'utilisation de méthodes statiques vs instanciation de la classe contenant les méthodes
- 18. Object Méthodes d'extension sur les types de valeur
- 19. Comment étendre une classe avec les méthodes d'extension C#?
- 20. Les méthodes d'extension pour les types génériques spécifiques
- 21. Méthodes super classe en javascript
- 22. classe générique et méthodes génériques
- 23. Obtenir la liste des méthodes de classe pour une classe arbitraire
- 24. Appeler les méthodes ViewModel
- 25. Transformation de méthodes C# en méthodes C++
- 26. Modèle de conception pour les méthodes d'une autre classe
- 27. Méthodes de groupe dans la classe abstraite
- 28. Méthodes de partage d'instances de classe entre les processus
- 29. Lorsque vous héritez d'une classe, pouvez-vous générer toutes les fonctions et méthodes de remplacement?
- 30. Quels sont les inconvénients des méthodes statiques?
Avez-vous des assemblages source (.cs) ou compilés? Il y a une énorme différence ... –
Le répertoire des classes suggère que son code ... qui complique un peu les choses –
non, cela complique beaucoup les choses ;-p –