C# 如何使用Reflection+C获得所有引用

C# 如何使用Reflection+C获得所有引用,c#,reflection,C#,Reflection,使用System.Reflection,我可以从一个特定的类中获取所有方法 我需要知道这些方法的参考文献是什么。例如:在VisualStudio中,如果需要特定对象的引用 在对象上单击鼠标右键,然后选择“查找所有引用” Visual Studio显示此选定对象的引用 我想做同样的事情,但是通过代码反射或者其他方式 我可以这样做吗?这不能通过反射来完成。反射是检查元数据和程序集的工具。为了找到对给定方法/类型的所有引用,您需要检查程序集的底层IL。反射只有非常有限的IL功能,只是将其作为字节数组返

使用System.Reflection,我可以从一个特定的类中获取所有方法

我需要知道这些方法的参考文献是什么。例如:在VisualStudio中,如果需要特定对象的引用

在对象上单击鼠标右键,然后选择“查找所有引用” Visual Studio显示此选定对象的引用 我想做同样的事情,但是通过代码反射或者其他方式


我可以这样做吗?

这不能通过反射来完成。反射是检查元数据和程序集的工具。为了找到对给定方法/类型的所有引用,您需要检查程序集的底层IL。反射只有非常有限的IL功能,只是将其作为字节数组返回。您需要自定义检查该字节流,以便收集有关其引用内容的任何上下文。

这不是可以通过特定类上的运行时反射直接访问的内容。您必须内省整个源代码树或生成的IL,以确定对具有相同名称的特定方法的任何引用是否是您试图查找引用的方法的正确重载和签名


此外,如果没有额外的工作,您将永远无法找到通过反射调用的特定方法的引用。这就是混淆这类代码具有挑战性且容易出错的原因之一。

如果您只是想查找参考资料以供参考,Reflector具有该功能

微软在开源许可下发布了这些项目。这些项目旨在支持许多与编译器相关的特性,包括您所指的汇编分析。文档是有限的,因此您需要对公共语言基础设施有一个透彻的了解,以便有效地将其用于您的目的


这里没有魔法代码示例。这是一项庞大而复杂的任务,大部分时间你都要自己完成。

为什么人们会对这个问题投赞成票?到处都是拼写错误和语法错误,它要求做一些充其量也几乎没有实际意义的事情,除非你试图重新发明反射器,而且很可能在遥远的将来产生自己的DailyWTF文章。@Aaronaught Up VotdEd只为ryou写:@Aaronaught和那些投票支持他的评论的人bad English也让我恼火,但是通过我在stack exchange的多年工作,我发现在这些情况下,适当的做法是修改问题以修正英语,而不是抱怨。@Aaronaught至于问题的有用性,或者问问题的人的动机,没有人能判断。唯一值得关注的是,这是否是一个有效的问题,当然是。此外,不管克里斯蒂安·特兰将如何处理这些答案,为了知识而追求知识确实是一种崇高的追求。这个问题:c反思和寻找所有参考是这个问题的重复,因为这个问题的日期比这个问题晚。尽管如此,这个问题还是得到了很好的答案!