转到实现的方法而不是接口

问题描述 投票:0回答:6

经常在浏览代码时,我会遇到这样的情况:

public class Fruity
{
    private IOrange _Orange;

    public Fruity()
    {
        _Orange = new Orange() as IOrange;
    }

    public void PrepareFruit()
    {
        return _Orange.Peel();
    }
}

太好了,现在我想看看 Peel 方法是如何实现的。右键单击该方法会显示“转到定义”,这会将我带到接口存根。

好吧,严格来说,私有变量是这样定义的,所以定义是由接口赋予的,但是有没有办法直接进入实现呢?

当然还有“查找所有引用”,这是一种调用、接口和具体的分散枪方法。但在这种情况下,实现的来源是显而易见的,所以我应该能够跳到我想的......

显然,有时可能会存在歧义,这里对此进行了很好的描述:

转到具体类型的定义

但是,当实施非常清晰时,肯定应该有一个“转到实施”选项。

c# visual-studio-2010 class interface
6个回答
7
投票

如果双击或突出显示

Peel
并按
CTRL+,
,您将看到“导航到符号”窗口,该窗口将列出实际的实现,通常作为第二项。这是无需第三方工具即可找到它的最快方法。与“查找所有引用”不同,它仅显示方法定义,而不显示调用的位置。


3
投票

使用 Visual Studio >= 2015,您可以使用快捷键 ctrl + F12 跳转到实现


2
投票

如果您转到 Visual Studio 菜单“查看”并选择“代码定义窗口”,当您单击

.Peel()
时,您可能会看到
.Peel()
的实现(这并不总是有效,但尝试一下看看).


1
投票

当然已经存在于 Visual Studio 中!从那时起它就在那里。

右键单击您的代码(例如:属性)并选择“查看调用层次结构”。在 Call Hierarchy 窗口中选择 Implements 文件夹。

你来了。为什么要Reshaper??? 当然,并不像 resharper 的实现那么复杂,它允许直接询问接口,但只有一个属性或该接口的方法就足够了。例如:

public interface IModule
{
int Count { get; set; }
}

public class Module : Imodule
{ 
  public int Count {get; set;}
}

public class Module2 : Imodule
{ 
   public int Count {get; set;}  
}

右键单击 Count 属性(任意位置 - 类内部或接口内部)并选择“查看调用层次结构”,应该说明哪个类实现了它,从而说明了整个接口。

一开始我们都喜欢Resharper,随着时间的推移,我们都讨厌它!


0
投票

Visual Studio 2015 可以使用“转到实施”扩展来执行此操作 - https://visualstudiogallery.msdn.microsoft.com/0ed93222-83cd-4db3-92bc-a78909047156

如果有多个实现,它会向您显示一个列表,以便您可以选择跳转到哪个。


0
投票

右键单击该方法,然后选择“Go to Implement”(与 Ctrl + F12 相同)。

如果您选择“转到定义”,则会打开界面。

© www.soinside.com 2019 - 2024. All rights reserved.