2016-02-02 8 views
3

Вопрос. Есть ли способ получить экземпляр CustomAttributeData на основе данного экземпляра моего пользовательского атрибута, скажем, MyAttribute? Или наоборот?Пройдите от Атрибута до CustomAttributeДата или назад

Зачем мне это нужно? Экземпляр MyAttribute содержит свойство Меня интересует, в то время как экземпляр CustomAttributeData содержит фактические параметры конструктора Я заинтересован в Так что теперь я могу осуществить двойную работу:. первого, получить экземпляр MyAttribute по телефону

Attribute.GetCustomAttribute(property, typeof(MyAttribute)) as MyAttribute 

и второй, получить экземпляр CustomAttributeData по телефону

CustomAttributeData.GetCustomAttributes(property) 

и ходить по этой коллекции.

P. S. Я взглянул на this question, но не нашел нужное решение там.

ответ

1

Если я правильно понял ваш вопрос, у вас уже есть экземпляр пользовательского атрибута MyAttributeInstance, и вы хотите получить CustomAttributeData для того же экземпляра, желательно за один шаг.

Поскольку вы уже нашли MyAttributeInstance и привязаны к свойству (или классу или ...), я предположим, что у вас есть доступное свойство. Так что это может возможно работа для вас:

CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == MyAttributeInstance.GetType()); 

Я думаю, что ответ на ваш фактический вопрос. Тем не менее, я думаю, что ваши намерения могут были на самом деле спросить, как получить CustomAttributeData из свойства напрямую. В этом случае попробуйте это:

CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == typeof(MyAttribute)); 
+0

Спасибо за ответ. Мне кажется (я точно не помню), что то, о чем я спрашивал, было, как, имея экземпляр класса Attribute, получить экземпляр класса CustomAttributeData. В этом случае ваш ответ предлагает только другой способ получить экземпляр класса CustomAttributeData, имея экземпляр класса PropertyInfo (в этом вопросе был предложен другой вариант). – Hoborg

 Смежные вопросы

  • Нет связанных вопросов^_^