Как определить, реализует ли тип интерфейса пользовательский атрибут?
Использование GetCustomAttributes:
GetCustomAttributes
typeof(IWhatever).GetCustomAttributes(typeof(CustomAttribute), false)
Возвращает массив атрибутов.Пустой, если он не реализует тот, который вы ищете.
Примерьте размер:
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)); }
Type iType = typeof(IMyInterface); var attributes = iType.GetCustomAttributes(typeof(MyCustomAttribute), true);
Если attributes пусто, то интерфейс не реализует ваш атрибут.
attributes