你如何找到界面的所有实现?

iam*_*ael 62 c# resharper reflector visual-studio

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

蛮力方法是在Visual Studio中使用"查找引用"并手动查看结果以将实现与实现分开,但是对于大型代码库中的接口而言,这些接口被相对较少的实现大量引用,这可以是耗时且容易出错.

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

小智 99

您可以右键单击方法名称(接口中的定义或其他类中的实现),然后选择"查看调用层次结构".在"调用层次结构"窗口中,有"Implements"文件夹,您可以在其中找到接口方法实现的所有位置.

  • 这应该是接受的答案,因为它(a)完成工作,(b)不依赖于[付费]第三方工具 (9认同)

Jon*_*eet 33

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

如果安装了ReSharper:

在Visual Studio中,右键单击类型名称,然后选择"转到继承者".或者,选择类型名称,然后转到ReSharper/View/Type Hierarchy以打开新选项卡.(菜单会显示键盘快捷键 - 这可能会有所不同,这就是为什么我解释了如何找到它:)

如果您没有ReSharper:

  • 您可以使用Reflector,它能够非常轻松地向您显示所有类型层次结构 - 在类型名称下面是基本类型和派生类型的可扩展项目.可以使用类似的工具,例如ILSpydotPeek.
  • 购买ReSharper - 这是一个很棒的工具:)

  • @beruic:不再是了 - 当我写这篇文章时它又回来了,我想:)会添加一些免费选项...... (2认同)

Bah*_*ere 17

将光标放在类或接口类型和

CTRL + F12

  • 请注意,这仅适用于 Visual Studio 2015 Update 1 及更高版本。 (3认同)

P.B*_*key 13

使用Visual Studio 2010+

右键单击成员方法,然后选择查看调用层次结构.展开Implements文件夹.这列出了实现该方法所属接口的所有类型.

在此输入图像描述

使用Resharper 7

右键单击界面>导航到>派生符号.以粗体列出的符号直接来自界面.非粗体符号来自超类.

在此输入图像描述


Nik*_* A. 9

对于那些使用Visual Studio 2015的人来说,有一个很棒的扩展名为Go To Implementation.试试看.

安装完扩展程序后,您只需右键单击该界面的任何位置(例如IUrlShortener)并单击Go To Implementation菜单.如果您只有一个实现该界面的类,单击该菜单将直接带您进入该类.如果您有多个实现该接口的类,它将列出所有类.

  • @wziska如您所愿,此功能现在在[Visual Studio 2015 Update 1 RC]中实现(http://blogs.msdn.com/b/visualstudio/archive/2015/10/29/visual-studio-update-1 -rc.aspx):) (3认同)

Nat*_*ook 6

对于使用Visual Studio 2015的用户,请安装Visual Studio 2015 Update 1 RC.来自Visual Studio博客:

今天我们发布了Visual Studio 2015 Update 1 RC,它基于我们三周前发布的Update 1 CTP.除了此处所述的CTP中引入的功能外,Release Candidate还包括以下内容:

  • 去实施.许多人一直在等待的功能:只需右键单击接口或抽象方法,然后选择此命令即可导航到实现.