2010-10-08 18 views
5

Użyłem AppDomain.CurrentDomain.GetAssemblies() do wyświetlenia wszystkich złożeń, ale jak wyświetlić listę wszystkich wbudowanych atrybutów w .NET 2.0 przy użyciu C#?Wszystkie wbudowane atrybuty .Net

Odpowiedz

15

Zauważ, że AppDomain.GetAssemblies() pokaże tylko ładowane zespoły ... ale wtedy jest to proste:

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

.NET 2.0 (nie LINQ) wersja:

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

Dałbym +2 za wzmiankę o tym, że wyświetla listę tylko załadowanych zespołów, gdybym mógł! – Will

+1

dodano wersję 2.0. @ARco: naprawdę zaczynasz doceniać linq, kiedy musisz wrócić do starego sposobu. –

+0

@Michael: Dzięki, na miejscu. –

Powiązane problemy