2010-10-08 7 views
5

J'ai utilisé AppDomain.CurrentDomain.GetAssemblies() pour lister tous les assemblages, mais comment puis-je lister tous les attributs intégrés dans .NET 2.0 en utilisant C#?Tous les attributs .Net intégrés

Répondre

15

Notez que AppDomain.GetAssemblies() ne répertorie que chargé ensembles ... mais il est facile:

var attributes = from assembly in assemblies 
       from type in assembly.GetTypes() 
       where typeof(Attribute).IsAssignableFrom(type) 
       select type; 

2,0 .NET Version (non LINQ):

List<Type> attributes = new List<Type>(); 
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) 
{ 
    foreach (Type type in assembly.GetTypes()) 
    { 
     if (typeof(Attribute).IsAssignableFrom(type)) 
     { 
      attributes.Add(type); 
     } 
    }     
} 
+0

Je donnerais +2 pour mentionner qu'il ne liste que des assemblages chargés si je le pouvais! – Will

+1

a ajouté la version 2.0. @arco: vous commencez vraiment à apprécier linq quand vous devez retourner à l'ancienne. –

+0

@Michael: Merci, sur place. –

Questions connexes