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

本文关键字:接口 方法 实现 | 更新日期: 2023-09-27 18:07:38

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

public class Fruity
{
    private IOrange _Orange;
    public Fruity()
    {
        _Orange = new Orange() as IOrange;
    }
    public void PrepareFruit()
    {
        return _Orange.Peel();
    }
}

很好,现在我想看看Peel方法是如何实现的。右键单击该方法会给我Go To Definition,这将带我到接口存根。

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

当然还有查找所有引用,这是一种调用、接口和连接的散弹枪方法。但是在这种情况下,实现的源代码是显而易见的,所以我应该能够跳转到它。

显然,有时会出现歧义,这里描述得很好:

到具体类型的定义

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

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

如果双击或高亮Peel并按下CTRL+,,您将获得"导航到符号"窗口,该窗口将列出实际实现,通常作为第二项。这是在没有第三方工具的情况下找到它的最快方法。与"查找所有引用"不同,它只显示方法定义,而不显示任何调用它的地方。

如果你转到Visual Studio菜单"视图"并选择"代码定义窗口",当你点击.Peel()时,你可能会显示.Peel()的实现(这并不总是工作,但尝试一下看看)。

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

当然在Visual Studio中已经存在了!它从一开始就在那里。

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

你在这儿。为什么是Resharper ?当然,这并不像从resharper实现那样复杂,因为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,随着时间的推移,我们都讨厌它了

Visual Studio 2015可以使用"Go To Implementation"扩展- https://visualstudiogallery.msdn.microsoft.com/0ed93222-83cd-4db3-92bc-a78909047156

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

相关文章: