如何找到接口的所有实现?

假设您有一个在 C # 中定义的接口。找到提供接口实现的所有类的最简单方法是什么?

粗暴的方法是在 Visual Studio 中使用“ Find References”,然后手动查看结果,将用法从实现中分离出来,但是对于一个大型代码库中的接口来说,这个接口大量使用 引用,实现相对较少,这可能会耗费时间并且容易出错。

在 Java 中,在代码库上运行 javadoc (使用-private 选项来包含私有类)将为接口生成一个文档页面(例如 可比的) ,其中包括接口的所有实现类以及任何子接口(尽管它不包括子接口的实现类,但是通过深入到列出的子接口中来确定它们相对容易)。正是这个功能,我正在寻找,但与 C # 和 Visual Studio。

31785 次浏览

我不认为 VS 内置了这个功能,但是 IIRC清醒一下具有这个功能。

如果使用 resharper ALT + END快捷方式,可能有助于查找所有继承者。

(根据评论进行编辑...)

如果你安装了 ReSharper:

在 VisualStudio 中,右键单击类型名称并选择“转到继承者”。或者,选择类型名称,然后转到 ReSharper/View/Type HiHP 打开一个新的选项卡。(菜单会显示快捷键——这可能会有所不同,所以我解释了如何找到它:)

如果你没有 ReSharper:

  • 您可以使用 反光镜,它能够非常容易地显示所有类型层次结构——类型名称下面是基类型和派生类型的可展开项。类似的工具也可以使用,如 ILSpyDotPeek
  • 购买 ReSharper-它是一个很好的工具:)

我听说(我自己没有经验) 氧气对于.Net 就像 javadoc 对于 java 一样。

在普通 Visual Studio 中(从2010年开始) ,您可以右键单击一个方法名称(接口中的定义或其他类中的实现)并选择“查看调用层次结构”。在“调用层次结构”窗口中有一个“实现”文件夹,您可以在其中找到接口方法实现的所有位置。

使用 VisualStudio2010 +

右键单击成员方法并选择视图调用层次结构。展开“实现”文件夹。这将列出实现该方法所属接口的所有类型。

enter image description here

和 Resharper 7一起

右键单击界面 > 导航到 > 派生符号。大胆中列出的符号直接派生自接口。非粗体符号派生自超类。

enter image description here

使用 Shift + F12显示所有引用,包括定义。

您可以对接口进行正则表达式搜索。

:(\ *[^},]+,)*\ *IMyInterfaceName

CTRL + SHIFT + F 启动以下窗口:

Visual Studio Screenshot

我更喜欢“导航到...”选项。将光标放在函数调用上,尝试以下操作:

快捷键:

  1. Ctrl + ,(Ctrl + 逗号)

菜单:

  1. 编辑菜单
  2. 点击“导航到...”

好处:

  • 没有显示“查找所有引用”之类的所有引用
  • 显示 “ type”的实现,这样它就会注意到哪个是您的接口

对于那些使用 VisualStudio2015的用户,有一个很棒的扩展名为 进入实施阶段

一旦你安装了扩展,你可以在界面的任何地方右键点击(例如 IUrlShortener) ,然后点击 Go To Implementation菜单。如果您只有一个实现接口的类,单击菜单将直接带您到该类。如果您有多个实现接口的类,它将列出所有的类。

对于那些使用 VisualStudio2015的用户,安装 VisualStudio2015更新1 RC:

今天我们发布了 VisualStudio2015Update1RC,它基于我们三周前发布的 Update1CTP。除了本文介绍的 CTP 中引入的特性之外,候选发行版还包括以下内容:

  • 执行。你们很多人一直在等待的特性: 只需右键单击一个接口或抽象方法,然后选择这个命令来导航到实现。

将光标放置到类或接口类型,然后

CTRL + F12