我搜索一种显示类的所有静态出现的方法(类似于Visual Studio功能:查找所有引用)。
它应该仅通过代码而不是手动。
我想
我的第一步是列出我感兴趣的所有类型:
var result = from t in assembly.GetTypes()
where t.IsDefined(typeof(TAttribute), inherit)
select t;
return result.ToList();
我遇到了第二步的问题。 我知道如何从课堂上找到属性....但是怎么可能反过来,找到一个阶级的所有用法?
答案 0 :(得分:3)
您无法使用反射找到静态引用,这是AST
可能知道的内容。为此,您可能希望使用:Roslyn(编译器即服务),让您编译并调查AST。
答案 1 :(得分:1)
您无法使用反射在方法体中找到引用,但您可以找到字段,属性和方法参数/返回值。
您已经知道如何为每种类型列出所有类型:
Type.GetProperties
返回PropertyInfo
数组,您可以检查`PropertyInfo.ProeprtType'是否在您关注的类型列表中。
Type.GetFields
对于调用Type.GetMethods
的方法,这将返回MethodInfo
个对象的数组,以获取您检查的返回类型MethodInfo.ReturnType
以及参数call MethodInfo.GetParameters
和{{ 1}}
只留下在方法体内定义的局部变量,并且无法使用反射访问