2010-02-10 5 views
5

Ich versuche festzustellen, ob eine Schnittstelle mit einem bestimmten Attribut versehen ist. Zum Beispiel habe ich die folgende Schnittstelle:So ermitteln Sie, ob eine Klasse mit einem bestimmten Attribut versehen ist

<MyCustomAttribute()> _ 
Public Interface IMyInterface 
    Function Function1 
    Sub DeleteWorkflowInstanceMap(ByVal instanceId As Guid) 
    Sub InsertWorkflowInstanceMap(ByVal instanceId As Guid, ByVal aliasName As String) 
End Interface 

Wie kann ich feststellen, ob IMyInterface mit dem MyCustomAttribute verziert Attribute?

Antwort

7

Noch besser als GetCustomAttributes ist das gemeinsame Verfahren IsDefined:

Attribute.IsDefined(GetType(IMyInterface), GetType(MyCustomAttribute)) 
3
GetType(IMyInterface).GetCustomAttributes(GetType(MyCustomAttribute), false).Length > 0 

(Ich hoffe, dass ich die VB-Syntax Recht haben.) Im Grunde genommen eine Art bekommen darstellt IMyInterface, dann GetCustomAttributes auf sie rufen Sie den Typ des Attributs vorbei Sie interessiert sind. Wenn das eine nicht leere Array zurückgibt, das Attribut ist vorhanden. diese

+0

Perfekt ... Vielen Dank! –

Verwandte Themen