Как определить, реализует ли тип интерфейса пользовательский атрибут - PullRequest
0 голосов
/ 26 июля 2010

Как определить, реализует ли тип интерфейса пользовательский атрибут?

Ответы [ 3 ]

5 голосов
/ 26 июля 2010

Использование GetCustomAttributes:

typeof(IWhatever).GetCustomAttributes(typeof(CustomAttribute), false)

Возвращает массив атрибутов.Пустой, если он не реализует тот, который вы ищете.

0 голосов
/ 26 июля 2010

Примерьте размер:

private static bool HasAttribute(this Type me, Type attribute)
{
    if (!typeof(Attribute).IsAssignableFrom(attribute))
        throw new ArgumentException("attribute does not extend System.Attribute.");
    return me.GetCustomAttributes(attribute, true).Length > 0;
}
private static bool HasAttribute<T>(this Type me) where T : System.Attribute
{
    return me.HasAttribute(typeof(T));
}
0 голосов
/ 26 июля 2010
Type iType = typeof(IMyInterface);
var attributes = iType.GetCustomAttributes(typeof(MyCustomAttribute), true);

Если attributes пусто, то интерфейс не реализует ваш атрибут.

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