基于名称空间/程序集的字符串表示检测方法上的属性

本文关键字:检测 表示 方法 属性 字符串 空间 程序集 于名 | 更新日期: 2023-09-27 18:18:29

我想知道如何检测方法上的任意属性,如果你所知道的只是属性的完全限定名。

,

[MyAttribute]
public void SomeMethod()
{
} 

基于包含类型名称+程序集的字符串,我可以检测方法是否包含该字符串描述的属性吗?

我想使检测可插入和动态,所以不会有对属性程序集的引用。用户将向他们想要自己使用的属性添加引用。我只是想实现一个通用的方法来检测任何任意方法,只要我有它的完全限定的名称。

基于名称空间/程序集的字符串表示检测方法上的属性

好的,我可以执行以下操作来查找具有给定属性的所有方法:

Type t;
t.GetMembers().Where(m => m.GetCustomAttributes(false).Any(a => a.GetType().Namespace == "Some.nameSpace" && a.GetType().Name == "AttributeName")).ToArray();