26 Stimmen

alle Typen in der Baugruppe mit benutzerdefiniertem Attribut abrufen

Gibt es einen eleganten Weg, um alle Typen in einer Baugruppe zu erhalten, die ein benutzerdefiniertes Attribut haben?

Wenn ich also eine Klasse habe

[Findable]
public class MyFindableClass
{}

Ich möchte sie in einer Sammlung von Typen finden können, die von Assembly.GetTypes(...) zurückgegeben wird.

Ich kann es mit einer großen Hacke machen, aber ich bin mir sicher, dass jemand einen schöneren Weg kennt.

47voto

Ani Punkte 107342

Ich glaube nicht, dass Sie die Aufzählung jedes Typs in der Assembly umgehen können, indem Sie nach dem Attribut suchen, aber Sie könnten LINQ verwenden, um die Abfrage leichter verständlich zu machen:

Assembly assembly = ...
var types = from type in assembly.GetTypes()
            where Attribute.IsDefined(type, typeof(FindableAttribute))
            select type;

EDIT: Verschoben von MemberInfo.GetCustomAttributes a Attribute.IsDefined auf der Grundlage eines Vorschlags von Marc Gravell.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X