2010-02-10 5 views
5

Estoy tratando de determinar si una interfaz está decorada con un atributo específico. Por ejemplo, tengo el siguiente interfaz:Cómo determinar si una clase está decorada con un atributo específico

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

¿Cómo puedo determinar si IMyInterface está decorado con la MyCustomAttribute atributo?

Respuesta

7

Incluso mejor que GetCustomAttributes es el método compartido IsDefined:

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

(espero tener el derecho de sintaxis VB.) Básicamente conseguir un tipo que representa IMyInterface, a continuación, llamar GetCustomAttributes en él pasan el tipo de atributo que le interesa. Si que devuelve un conjunto no vacío, el atributo está presente.

+0

perfecto ... Gracias! –

Cuestiones relacionadas