Получить устаревший атрибут с помощью Linq

Кто-нибудь знает, как получить атрибут Obsolete при использовании Linq?

Я делаю NDepend, но в любом случае я хочу сделать запрос и получить все устаревшие атрибуты из методов, которые должны быть «устаревшими».

Obsolete["I WANT THIS STRING"]


person Khiem-Kim Ho Xuan    schedule 05.07.2013    source источник
comment
В LINQ/C# для каждого отражения или CINQ/NDepend?   -  person Matten    schedule 05.07.2013
comment
CLinq/NЗавис. Если это возможно   -  person Khiem-Kim Ho Xuan    schedule 05.07.2013
comment
возможный дубликат Как получить пользовательский атрибут из экземпляра объекта в C#   -  person ken2k    schedule 05.07.2013


Ответы (1)


Я считаю, что что-то вроде этого, что вы ищете

from type in YourAssembly
from p in type.GetProperties()
from m in type.GetMembers()
let propertyAttributes = p.GetCustomAttributes(true)
let methodAttributes = m.GetCustomAttributes(true)
where propertyAttributes.Any(a => a.GetType() == typeof(ObsoleteAttribute))
     || methodAttributes.Any(a => a.GetType() == typeof(ObsoleteAttribute))
select new type;

Он запрашивает все типы в сборке и выбирает те, у которых есть свойства или методы с атрибутом ObsoleteAttribute.

person Zache    schedule 16.07.2013