2 votes

Assemblage de requêtes

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 ?

6voto

Bob Points 34449

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
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X