暴力方法是在Visual Studio中使用“查找引用”,并手动浏览结果以区分用法和实现,但对于大型代码库中被大量引用但实现相对较少的接口,这可能耗时且容易出错。
在Java中,在代码库上运行javadoc(使用-private选项包括私有类)将为接口生成文档页面(例如Comparable),其中包括接口的所有实现类以及任何子接口(尽管它不包括子接口的实现类,但这些相对容易通过深入到列出的子接口来确定)。 我正在寻找的就是这个功能,但使用C#和Visual Studio。
在普通的Visual Studio(自2010年以来)中,您可以右键单击方法名称(接口中的定义或其他类中的实现),然后选择查看调用层次结构。在调用层次结构窗口中,有一个“实现”文件夹,您可以在其中找到接口方法实现的所有位置。
使用Visual Studio 2010+
右键单击成员方法,选择“查看调用层次结构”。展开实现文件夹,这会列出所有实现该方法所在接口的类型。
使用Resharper 7
右键单击接口 > 转到 > 派生符号。粗体列出的符号直接从该接口派生而来。非粗体符号从超类派生。
如果你使用的是Visual Studio 2015,有一个很棒的扩展程序叫做Go To Implementation。试试看吧。
安装完扩展程序后,你只需要在界面中任何出现接口(例如IUrlShortener)的地方右键单击,然后选择Go To Implementation(转到实现)
菜单。如果只有一个类实现了该接口,点击菜单将直接带您到该类。如果有多个类实现了该接口,则会列出所有类。
如果您使用的是Visual Studio 2015,请安装Visual Studio 2015更新1 RC。从Visual Studio博客上可以了解到:
今天我们发布了Visual Studio 2015更新1 RC版本,该版本是在三周前发布的更新1 CTP版本基础上构建的。除了在此处描述的CTP中引入的功能外,发布候选版还包括以下内容:
- 转到实现。这是许多人一直在等待的功能:只需右键单击界面或抽象方法,然后选择此命令即可导航到实现。
CTRL
+ F12
。 - Alexandru:(\ *[^},]+,)*\ *IMyInterfaceName
按下CTRL+SHIFT+F会启动以下窗口: