Получить все свойства, отмеченные определенным атрибутом
У меня есть класс и свойства. Некоторым свойствам может быть отмечен атрибут (он мой LocalizedDisplayName
наследует от DisplayNameAttribute
).
Это метод для получения всех свойств класса:
private void FillAttribute()
{
Type type = typeof (NormDoc);
PropertyInfo[] propertyInfos = type.GetProperties();
foreach (var propertyInfo in propertyInfos)
{
...
}
}
Я хочу добавить свойства класса в список, помеченный LocalizedDisplayName
, и отобразить значение атрибута в списке. Как я могу это сделать?
ИЗМЕНИТЬ
Это LocalizedDisplayNameAttribute:
public class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
public LocalizedDisplayNameAttribute(string resourceId)
: base(GetMessageFromResource(resourceId))
{ }
private static string GetMessageFromResource(string resourceId)
{
var test =Thread.CurrentThread.CurrentCulture;
ResourceManager manager = new ResourceManager("EArchive.Data.Resources.DataResource", Assembly.GetExecutingAssembly());
return manager.GetString(resourceId);
}
}
Я хочу получить строку из файла ресурсов.
Спасибо.
Ответы
Ответ 1
Возможно, проще всего использовать IsDefined
:
var properties = type.GetProperties()
.Where(prop => prop.IsDefined(typeof(LocalizedDisplayNameAttribute), false));
EDIT: Чтобы получить значения сами, вы должны использовать:
var attributes = (LocalizedDisplayNameAttribute[])
prop.GetCustomAttributes(typeof(LocalizedDisplayNameAttribute), false);