Как определить, украшен ли класс определенным атрибутом - PullRequest
5 голосов
/ 10 февраля 2010

Я пытаюсь определить, украшен ли интерфейс определенным атрибутом. Например, у меня есть следующий интерфейс:

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

Как определить, украшен ли IMyInterface атрибутом MyCustomAttribute?

Ответы [ 3 ]

7 голосов
/ 10 февраля 2010

Даже лучше, чем GetCustomAttributes - это метод Shared IsDefined:

Attribute.IsDefined(GetType(IMyInterface), GetType(MyCustomAttribute))
3 голосов
/ 10 февраля 2010
GetType(IMyInterface).GetCustomAttributes(GetType(MyCustomAttribute), false).Length > 0

(Надеюсь, у меня правильный синтаксис VB.) По сути, получаем тип, представляющий IMyInterface, затем вызываем GetCustomAttributes для него, передавая интересующий вас тип атрибута. Если он возвращает непустой массив, атрибут присутствует .

0 голосов
/ 10 февраля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...