Edit:
Там на самом деле, как представляется, метод IsDefined
расширения в System.Reflection.Extensions
пакете. Использование:
var defined = propertyInfo.IsDefined(typeof(AttributeClass));
Вам необходимо включить пространство имен System.Reflection
. Исходный код ссылки можно найти here. Около MemberInfo
, он работает на Assembly
, Module
и ParameterInfo
тоже.
Это possibly faster, чем с использованием GetCustomAttribute
.
Оригинальное сообщение:
Похоже, он не портирован на .NET Ядра еще. В среднем в то время как вы можете использовать GetCustomAttribute
, чтобы определить, является ли атрибут установлен на свойстве:
bool defined = propertyInfo.GetCustomAttribute(typeof(AttributeClass)) != null;
Вы можете испечь это в метод расширения:
public static class MemberInfoExtensions
{
public static bool IsAttributeDefined<TAttribute>(this MemberInfo memberInfo)
{
return memberInfo.IsAttributeDefined(typeof(TAttribute));
}
public static bool IsAttributeDefined(this MemberInfo memberInfo, Type attributeType)
{
return memberInfo.GetCustomAttribute(attributeType) != null;
}
}
и использовать его как это:
bool defined = propertyInfo.IsAttributeDefined<AttributeClass>();
Спасибо за отличное предложение. К сожалению, это не работает. Он всегда возвращает null. 'GetCustomAttributes' вообще не содержит моего атрибута. – SaphuA
@SaphuA Я добавил пример. Можете ли вы показать, как выглядит ваш код? –
Угадай, что ты прав! Не уверен, что я сделал неправильно в своем тесте ... Спасибо! – SaphuA