查找所有对子方法的引用

时间:2014-05-22 17:05:06

标签: c# visual-studio-2012

我想在程序集中找到对DateTime.ToString引用的所有调用。在Visual Studio中,您可以“查找所有引用”"右键点击ToString;但是,它会返回所有类的ToString的所有引用,而不只是DateTime

由于以下示例,定期搜索DateTime.ToString无法正常工作:

DateTime myDate = new DateTime();
myDate.ToString();

有什么建议吗?

5 个答案:

答案 0 :(得分:13)

你应该使用ReSharper。

步骤:

  1. Download and install ReSharper(试用版适合您)
  2. 在Visual Studio中打开您的项目/解决方案
  3. 查找ToString()的用法,例如myDate.ToString();
  4. 右键点击ToString令牌
  5. 选择Find Usages Advanced ...菜单项
  6. 在窗口中勾选相应的框,如下面的屏幕截图所示,然后点击Find
  7. PROFIT
  8. enter image description here

答案 1 :(得分:8)

在VS2015中,当您尝试查找覆盖方法的引用时,可以按类型对它们进行分组
结果如下: Find Symbol Results

enter image description here

答案 2 :(得分:2)

在Visual Studio 2019中,右键单击所需的方法名称,然后单击“查看调用层次结构”。 Visual Studio的底部(默认)显示“呼叫层次结构”窗口。在左窗格中,您将看到调用该方法的项目的树形表示。在每个项目中,第一项是“对[MethodName]的调用”。展开第一项以获得方法列表。单击每个方法将更改“调用层次结构”窗口的右窗格,以显示在其中调用该方法的行。双击这些行以转到它们并分别进行寻址。

答案 3 :(得分:1)

在视觉工作室,AFAIK是不可能的,虽然resharper可以。

在resharper的“查找高级用法”窗口中,您可以过滤掉您要查找的类型。您可以指定较少派生或更多派生。

因此,在这种情况下,您只能过滤掉DateTime或全部ValueTypeSystem.Object

enter image description here

<小时/>

在这种情况下,我猜视觉工作室无法提供帮助,但我还是想分享一些技巧。

例如:如果您想要找到PropertyChanged类的Person事件的所有引用,假设某人实现了INotifyPropertyChanged,那么您将获得大量的引用,因为有很多类它实现了INotifyPropertyChanged

您可以做些什么,只需转到Person课程并注释掉INotifyPropertyChanged界面的实施。然后查找visual studio中的所有引用只会告诉您Person类的引用。并非所有类型。

至少我希望这个技巧可以在其他地方提供帮助,如果不是现在的话。

答案 4 :(得分:0)

商业工具NDepends对此非常有用:它可以让您找到使用特定组件/类/方法的组件/类/方法。

它可能并不便宜,但是如果你有一个很大的代码库 - 特别是有几个组件 - 它可能非常有效!