Я пытаюсь использовать отражение, чтобы определить, какие свойства типа имеют определенный атрибут.Кажется, это работает нормально, когда я сам создаю пользовательский атрибут, но в настоящее время он не работает для атрибута в сборке стороннего производителя.
Рассматриваемая сборка - это SolrNet, а Атрибут имеет тип SolrField
.
Пример класса с использованием:
public class PublicDocument : SearchItem {
[SolrField("case")]
public string CaseNumber { get; set; }
[SolrField("case_name")]
public string CaseName { get; set; }
}
Вот мой код для получения этих атрибутов.Любопытно, что свойство. Атрибуты пустые! EDIT : после повторного просмотра это свойство будет пустым даже для других пользовательских типов и, по-видимому, зарезервировано для атрибутов фреймворка.
PublicDocument item = new PublicDocument();
foreach (PropertyInfo property in item.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) {
foreach (object attribute in property.GetCustomAttributes(typeof(SolrField), true)) {
//do some stuff here
}
}
Здесь определено SolrField: https://github.com/mausch/SolrNet/blob/master/SolrNet/Attributes/SolrFieldAttribute.cs
Как я уже сказал, этот же код прекрасно работает с атрибутом, определенным в одной из моих сборок и использованным в том же шаблоне.Итак, мой вопрос здесь: можно ли пометить атрибуты так, чтобы они не отображались таким образом, или здесь есть другая проблема?