您如何快速找到接口方法的实现?

时间:2009-08-11 16:43:47

标签: c# visual-studio intellisense interface-implementation

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

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()并单击“Go To Definition”,它会将我带到界面。如果我单击“查找所有引用”,我可能会看到所有用途的列表......而不仅仅是实现GetInt()方法的类。

有没有更快的方法来找到它?其他开发者的任何提示?我们正在使用D.I.对于我们的大多数依赖项,这意味着遍历深层嵌套代码需要永远

6 个答案:

答案 0 :(得分:111)

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

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

AFAIK这是在没有ReSharper的情况下找到方法实现的最快方法。

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

答案 1 :(得分:22)

Alt-End将在ReSharper中执行此操作,我相信。

答案 2 :(得分:9)

没有ReSharper,最好的方法是:

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

这将找到所有实现,而不是在具体实现中搜索您的函数。

答案 3 :(得分:4)

答案 4 :(得分:2)

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

using System;
using PrimaryImplementation = YourNamespace.YourConcreteObject;


public interface IYourInterface{

}

当你进入界面时,你有一种快速(和肮脏)的方式来进入你的界面的主要实现。 F12->!F12

答案 5 :(得分:1)

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