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

Bee*_*eep 68 c# intellisense visual-studio 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在查看SomeOtherClass.TestMethod()时快速访问SomeClass.GetInt().如果我右键单击_someClass.GetInt()并单击"Go To Definition",它会将我带到界面.如果我单击"查找所有引用",我可能会看到所有用途的列表......而不仅仅是实现GetInt()方法的类.

有没有更快的方法来找到它?其他开发者的任何提示?我们正在使用DI来处理大多数依赖项,这意味着通过深层嵌套代码进行跟踪需要永远.

Ari*_*ini 114

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

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

AFAIK这是找到方法实现的最快方法,没有ReSharper.

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

  • 我认为你不需要第二个Ctrl.即Ctrl-K,T应该工作 (8认同)

lan*_*nce 23

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

  • 哎呀,每个开发人员349美元.这就是我们为VS2008 pro付出的代价. (17认同)
  • 你没有要求ReSharper的销售宣传,你所获得的不是我们的业务,而是考虑你正在做什么样的钱做你正在做的事情,然后考虑你有多快收回许可费.如果数字合适,350美元是值得的.为了给你一些观点,我会声称,经过1个月的实际放慢自己足够学习ReSharper的细节(并且,当然,我还在学习其中的一些),当我工作时,该工具增加了我的工作量作为代码作者的生产力至少达到30%(坦白说,它可能更高,但我不想夸大其词). (12认同)
  • 我同意,任何一个以resharpers价格(C#唯一版本甚至更便宜)的公司都是白痴,因为你浪费的时间不花费1000美元.我也同意lance的观点,即resharper的成本在一个月内很容易收回. (5认同)
  • 同意!我不在乎你赚了多少钱 - 你必须使用"Go To Implementation"功能来收回该功能单独的许可证费用!:) (4认同)
  • 我过去曾经用过它.虽然我发现它对重构有用(我不经常这样做),但我发现它并没有让我更有效率.我承认我没有花很多时间学习"进出",但是当我们VS.NET的唯一问题是找到实现的接口时,我很难证明费用是合理的. (3认同)

Zhe*_*nya 9

没有ReSharper,最好的方法是:

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

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

  • 看到ISomeClass感到很奇怪,我们通常以'I'而不是类开始接口...但这就是我们 (2认同)