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

强力方法是在 Visual Studio 中使用“查找引用”并手动查看结果以将用法与实现分开,但对于大型代码库中的接口来说,该接口的使用量很大 引用的 由于实现相对较少,这可能非常耗时且容易出错。

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

有帮助吗?

解决方案

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

如果您安装了 ReSharper:

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

如果您没有 ReSharper:

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

其他提示

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

将光标置于类或接口类型和

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 中引入的功能之外,候选版本还包括以下功能:

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

我认为这个功能不是内置在VS中,而是IIRC Resharper 有这个功能。

您可以对界面进行正则表达式搜索。

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

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

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

快捷键:

  1. Ctrl+,(Ctrl+逗号)

菜单:

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

好处:

  • 不显示所有引用,例如“查找所有引用”
  • 显示实现的“类型”,以便注意哪个是您的接口

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

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

我听说过(自己没有经验) doxygen 是.Net,就像javadoc一样的java。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top