J'ai un assemblage .NET qui contient des dizaines de classes et de méthodes qui sont des méthodes de test unitaire. Je veux générer un rapport avec toutes les méthodes marquées de l'attribut Ignore, Connaissez-vous un moyen simple de le faire ?
Réponse
Trop de publicités?Vous voulez l'obtenir Attributs personnalisés méthode
Assembly ass = Assembly.Load("yourassembly.dll");
object[] attributes = ass.GetCustomAttributes(typeof(IgnoreAttribute), false));
Cette méthode existe aussi sur l'objet méthode, donc vous pouvez itérer à travers tous les types de votre assemblage et itérer à travers toutes leurs méthodes, et appeler la même méthode.
foreach(Type type in ass.GetTypes()) {
foreach(MethodInfo method in type.GetMethods()) {
method.GetCustomAttributes(typeof(IgnoreAttribute), true));
}
}
Edit, Voici un peu d'aide avec la syntaxe powershell, bien que je doive dire, je ne suis PAS à l'aise avec powershell. Je suis sûr que quelqu'un peut faire cela bien mieux que la merde que j'ai ci-dessous.
$types = [System.Reflection.Assembly]::LoadFile("C:\dll.dll").GetTypes()
$attribute = [System.Type]::GetType("IgnoreAttribute")
foreach ($type in $types) {
$methods = $type.GetMethods()
foreach ($method in $methods) {
if ($method .GetCustomAttributes($attribute).Length -gt 0) {
$method.Name
}
}