使用Linq获取Obsolete属性

本文关键字:属性 Obsolete 获取 Linq 使用 | 更新日期: 2023-09-27 18:21:04

有人知道在使用Linq时如何获得Obsolete属性吗?

我正在做NDepend,但无论如何,我想进行查询,并从应该"弃用"的方法中获取所有过时的属性

Obsolete["I WANT THIS STRING"]

使用Linq获取Obsolete属性

我相信像这样的东西就是你想要的

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属性或方法的类型。