假设您有一个在C#中定义的接口.查找提供接口实现的所有类的最简单方法是什么?
蛮力方法是在Visual Studio中使用"查找引用"并手动查看结果以将实现与实现分开,但是对于大型代码库中的接口而言,这些接口被相对较少的实现大量引用,这可以是耗时且容易出错.
在Java中,在代码库上运行javadoc(使用-private选项包含私有类)将生成接口的文档页面(例如Comparable),其中包括接口的所有实现类以及任何子接口(尽管它没有包括实现子接口的类,通过深入查看列出的子接口可以相对容易地确定这些类.这是我正在寻找的功能,但使用C#和Visual Studio.
您可以右键单击方法名称(接口中的定义或其他类中的实现),然后选择"查看调用层次结构".在"调用层次结构"窗口中,有"Implements"文件夹,您可以在其中找到接口方法实现的所有位置.
(根据评论编辑......)
如果安装了ReSharper:
在Visual Studio中,右键单击类型名称,然后选择"转到继承者".或者,选择类型名称,然后转到ReSharper/View/Type Hierarchy以打开新选项卡.(菜单会显示键盘快捷键 - 这可能会有所不同,这就是为什么我解释了如何找到它:)
如果您没有ReSharper:
您可以使用Reflector,它能够非常轻松地向您显示所有类型层次结构 - 在类型名称下面是基本类型和派生类型的可扩展项目.可以使用类似的工具,例如ILSpy和dotPeek.
购买ReSharper - 这是一个很棒的工具:)
将光标放在类或接口类型和
CTRL + F12
使用Visual Studio 2010+
右键单击成员方法,然后选择查看调用层次结构.展开Implements文件夹.这列出了实现该方法所属接口的所有类型.
使用Resharper 7
右键单击界面>导航到>派生符号.以粗体列出的符号直接来自界面.非粗体符号来自超类.
对于那些使用Visual Studio 2015的人来说,有一个很棒的扩展名为Go To Implementation.试试看.
安装完扩展程序后,您只需右键单击该界面的任何位置(例如IUrlShortener)并单击Go To Implementation
菜单.如果您只有一个实现该界面的类,单击该菜单将直接带您进入该类.如果您有多个实现该接口的类,它将列出所有类.
对于使用Visual Studio 2015的用户,请安装Visual Studio 2015 Update 1 RC.来自Visual Studio博客:
今天我们发布了Visual Studio 2015 Update 1 RC,它基于我们三周前发布的Update 1 CTP.除了此处所述的CTP中引入的功能外,Release Candidate还包括以下内容:
去实施.许多人一直在等待的功能:只需右键单击接口或抽象方法,然后选择此命令即可导航到实现.