72

有没有一种快速的方法可以找到接口的方法/属性/等的所有实现,而不是引用?这是一些示例代码:

public class SomeClass : IBaseClass
{
  public Int32 GetInt()
  {
     return 1;
  }
}

public interface IBaseClass
{
  public Int32 GetInt();
}

public class SomeOtherClass
{
  IBaseClass _someClass;
  private TestMethod()
  {
    _someClass = new SomeClass();
    _someClass.GetInt();
  }
}

我想在查看 SomeOtherClass.TestMethod() 时快速到达 SomeClass.GetInt()。如果我右键单击 _someClass.GetInt() 并单击“转到定义”,它会将我带到界面。如果我单击“查找所有引用”,我可能会看到所有用途的列表……而不仅仅是实现 GetInt() 方法的类。

有没有更快的方法找到这个?其他开发者有什么建议吗?我们对大部分依赖项都使用 DI,这意味着跟踪深度嵌套的代码需要很长时间

4

6 回答 6

118

由于我不喜欢在编码时使用鼠标,所以我通常

  • 将光标移到方法上
  • 键入ctrl+k clrl+t打开调用层次结构窗口
  • 向下移动到实施节点。
  • 键入返回以转到选定的实现

AFAIK 这是查找方法实现的最快方法,无需 ReSharper。

(顺便说一句:您可以使用相同的系统从类方法实现移动到相应的接口声明:只需选择根)

于 2011-11-24T16:28:56.097 回答
24

我相信 Alt-End 会在 ReSharper 中做到这一点。

于 2009-08-11T16:44:57.393 回答
9

如果没有 ReSharper,最好的方法是:

在文件中查找 (Ctrl+Shift+F) 查找内容:“class*ISomeClass” 查找选项:“使用通配符”

这将找到所有实现,然后您可以在具体实现中搜索您的功能。

于 2010-05-19T12:32:40.607 回答
3

你可以尝试使用这个插件:

http://blog.rthand.com/post/2010/01/18/Meet-e2809cGo-To-Implementatore2809d-DXCore-plugin-for-Visual-Studio.aspx

于 2010-06-09T11:56:56.943 回答
2

如果您的界面与您通常想要导航到的具体模型在同一个库中,则可以向具体对象添加“使用别名”。无论如何,“使用”都是帮助者,这很有帮助。

using System;
using PrimaryImplementation = YourNamespace.YourConcreteObject;


public interface IYourInterface{

}

当你被带到界面时,你有一种快速(但肮脏)的方式来获得界面的主要实现。F12->F12!

于 2013-03-06T16:18:53.497 回答
1

R# 在弹出菜单上有一个 Go to Implementation 选项,这非常方便。

于 2009-08-11T16:53:01.760 回答