【问题标题】:How can I find which classes implement a given interface in Visual Studio?如何在 Visual Studio 中找到哪些类实现给定接口?
【发布时间】:2010-10-31 10:06:12
【问题描述】:

我有一个解决方案。
我有一个界面。
我有几个实现接口的类。

我可以使用“查找所有引用”来查找接口的实现位置,但它也会返回接口为返回类型或类显式实现接口方法的结果。

有没有更好的方法来快速/轻松地找到实现接口的类?

【问题讨论】:

  • 看来,目前(无需购买附加组件)这在 Visual Studio 中是不可能的。这是一个非常昂贵的工具,但它缺乏这个有用的功能。我不明白为什么人们如此喜欢 Visual Studio。

标签: c# visual-studio visual-studio-2008 interface


【解决方案1】:

使用Resharper 中的“Go to Inheritor”功能或类似插件就可以解决问题。

【讨论】:

    【解决方案2】:

    Reflector使用是免费的)会告诉你这个;加载 dll 并找到接口 (F3) - 展开“Derived Types”节点。

    【讨论】:

    • 在网站的情况下,类(可以)存在于 App_Code 目录中,然后呢?
    • 我不能说——我已经几年没用过“网站”了,更喜欢“网络应用项目”。
    • Reflector 不再免费 :(
    • @Arjang 确实;事情会改变的。不过当时是免费的。我已经更新了答案
    • @xr280xr 在左侧窗格中查找并展开界面。您将在此界面下看到“基本类型”、“派生类型”。这是在 ILSpy 版本 2.3.1.1855 中。你可以在图片postimg.org/image/5ijbp5a49 上看到它的样子(我填写了命名空间和类名 - 你会在你的 dll 中看到它们)
    【解决方案3】:

    为什么不直接在整个解决方案中搜索:

    \:.*MyInterface
    

    并在搜索框中启用正则表达式 - 这应该可以完成工作。

    编辑:修正了正则表达式,它以前是用于 java 的,哎呀。

    【讨论】:

    • 不在 C# 中;并且没有简单而可靠的版本:IMyInterface - 它可能是:SomeClass,IMyInterface | : SomeClass, ISomethingElse, IMyInterface, : SomeClass where T : IMyInterface 等
    • IMyInterface 只是一个例子——SkippyFire 说他有一个接口,我认为他有一个特定的接口,因此有一个名称。正则表达式搜索确实应该可以工作,它在 Visual Studio 2008 中对我有用。我刚刚编辑了表达式,因为另一个是用于 Java 的 - 我的错。
    • 对不起,对于许多 cmets,我完全误读了您的评论,我可以看到重新阅读它,您的观点很好。但是,对于 SomeClass 来说,正则表达式已经足够了:ISomething, IMyInterface 但是对于通用约束,我们遇到了问题。如果 Visual Studio 为 search'n'replace 实现了一个适当的正则表达式引擎,它可以很容易地完成,但可惜它没有:-(
    【解决方案4】:

    使用 VS2010,安装 Productivity Power Tools(免费):

    1. 必要时退出调试模式
    2. 将鼠标悬停在对界面的引用上
    3. 展开出现的下拉菜单
    4. “实施者”

    【讨论】:

    • 不适用于 Visual Studio 2012
    猜你喜欢
    • 2021-06-21
    • 2011-11-15
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2011-10-26
    相关资源
    最近更新 更多