2010-10-08 17 views
5

Ich habe AppDomain.CurrentDomain.GetAssemblies() verwendet, um alle Assemblys aufzulisten, aber wie listet ich alle integrierten Attribute in .NET 2.0 mit C# auf?Alle integrierten .Net-Attribute

Antwort

15

Beachten Sie, dass AppDomain.GetAssemblies() nur Liste der Baugruppen geladen ... aber es ist dann einfach:

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

.NET 2.0 (nicht-LINQ) Version:

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

Ich würde geben +2 für die Erwähnung, dass es nur geladene Baugruppen auflistet, wenn ich könnte! – Will

+1

2.0 Version hinzugefügt. @arco: Du fängst wirklich an, linq zu schätzen, wenn du zurück auf die alte Art gehen musst. –

+0

@Michael: Danke, Spot auf. –

Verwandte Themen