10

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

public class Fruity
{
    private IOrange _Orange;

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

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

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

好的,严格来说,定义是由接口赋予的,因为私有变量是以这种方式定义的,但是有没有办法直接去实现呢?

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

显然,有时可能会出现模棱两可的情况,这里对此进行了很好的描述:

转到具体类型的定义

但可以肯定的是,当实现非常清晰时,应该有一个 Go To Implementation 选项。

4

5 回答 5

7

If you double-click or highlight Peel and press CTRL+, you'll get the "navigate to symbol" window which will list the actual implementation, usually as the second item. It's about the fastest way of finding it without 3rd party tools. And unlike "find all references", it only shows the method definitions and not wherever it's called.

于 2013-04-05T09:53:17.117 回答
2

如果您转到 Visual Studio 菜单“查看”并选择“代码定义窗口”,当您单击时,.Peel()您可能会看到实现.Peel()(这并不总是有效,但试试看)。

于 2013-04-05T09:57:49.917 回答
1

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

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

你在这。为什么要锐化???当然并不像从允许直接询问接口的 resharper 的 go 实现那么复杂,但只有一个属性或来自该接口的方法就足够了。前任:

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,随着时间的推移,我们都讨厌它!

于 2013-09-20T21:46:50.090 回答
1

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

于 2017-08-28T14:11:02.157 回答
0

Visual Studio 2015 可以使用“Go To Implementation”扩展来做到这一点 - https://visualstudiogallery.msdn.microsoft.com/0ed93222-83cd-4db3-92bc-a78909047156

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

于 2015-11-04T17:14:16.573 回答