代码之家  ›  专栏  ›  技术社区  ›  iammichael

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

  •  60
  • iammichael  · 技术社区  · 16 年前

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

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

    在爪哇中,在代码库上运行JavaDoc(使用私有选项包括私有类)将生成接口的文档页(例如)。 Comparable )这包括接口的所有实现类以及任何子接口(尽管它不包括子接口的实现类,但通过深入到列出的子接口中,可以相对容易地确定这些实现类)。这是我正在寻找的功能,但有了C和Visual Studio。

    12 回复  |  直到 6 年前
        1
  •  32
  •   Jon Skeet    9 年前

    (根据注释编辑…)

    如果安装了Resharper:

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

    如果您没有Resharper:

    • 你可以使用 Reflector 它可以很容易地向您显示所有类型层次结构-仅在类型名称下是基本类型和派生类型的可扩展项。可使用类似的工具,例如 ILSpy dotPeek .
    • 购买Resharper-这是一个很好的工具:)
        2
  •  95
  •   phoose    13 年前

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

        3
  •  14
  •   Bahtiyar Özdere    8 年前

    将光标放在类或接口类型上,然后

    CTRL+F12

        4
  •  13
  •   P.Brian.Mackey    11 年前

    使用Visual Studio 2010+

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

    enter image description here

    使用Resharper 7

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

    enter image description here

        5
  •  9
  •   Nik A.    9 年前

    对于使用Visual Studio 2015的用户,有一个很棒的扩展名 Go To Implementation . 试一试。

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

        6
  •  6
  •   Nate Cook    9 年前

    对于使用Visual Studio 2015的用户,请安装Visual Studio 2015更新1 rc。从 Visual Studio blog :

    今天我们发布了Visual Studio 2015 Update 1 RC,它基于我们三周前发布的Update 1 CTP。除了这里描述的CTP中引入的特性之外,候选版本还包括以下内容:

    • 转到实施 . 许多人一直在等待的特性:只需右键单击一个接口或抽象方法,然后选择此命令导航到实现。
        7
  •  2
  •   Mohit Chakraborty    16 年前

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

        8
  •  2
  •   Kees C. Bakker    10 年前

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

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

    ctrl+shift+f启动以下窗口:

    Visual Studio Screenshot

        9
  •  2
  •   Tony L. ccalboni    6 年前

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

    快捷键:

    1. ctrl+,(ctrl+逗号)

    菜单:

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

    效益:

    • 不显示所有引用,如“查找所有引用”
    • 显示 实现的“类型”,因此它会注意到哪个是您的接口
        10
  •  1
  •   Akira Yamamoto    10 年前

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

        11
  •  0
  •   Canavar    16 年前

    如果使用Resharper ALT+结束 快捷方式可能有助于查找所有继承者。

        12
  •  0
  •   albert    6 年前

    我听说过(我自己没有经验) doxygen 对于.NET,就像JavaDoc是Java一样。