繁体   English   中英

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

[英]Go to implemented method rather than interface

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

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菜单“View”并选择“Code Definition Window”,当您单击.Peel()您可能会看到.Peel()的实现(这并不总是有效,但请尝试看到)。

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

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

你在这。 为何选择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属性(任何地方 - 在类内或在界面内)并选择“View Call Hierarchy”,应该说哪个类实现了它,因此应该说是整个接口。

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

Visual Studio 2015可以使用“Go To Implementation”扩展程序执行此操作 - https://visualstudiogallery.msdn.microsoft.com/0ed93222-83cd-4db3-92bc-a78909047156

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM