【问题标题】:Go to definition on concrete type转到具体类型的定义
【发布时间】:2010-11-20 20:15:06
【问题描述】:

Visual Studio 是否有一个扩展允许从一个方法执行 Go to Definition 并让它直接导航到具体的实现而不是接口?我的大部分代码都是基于接口的,如果我执行定义,它会直接进入有意义的接口,很高兴有 Go to Concrete implementation..Thankx

【问题讨论】:

    标签: .net


    【解决方案1】:

    如果您使用resharper,它会提供 go to implementation,如果有不同的实现,您可以在不同的实现中进行选择。

    同样在Visual Studio中你可以使用find all references,方法图标和调用不同,你也可以按F8导航。

    在visual studio 2010或更高版本中,您可以使用“ctrl”+“”,并在此操作中出现的窗口中写入名称,然后在显示的候选中进行选择,在这种情况下您可以编写缩写,. ...

    【讨论】:

      【解决方案2】:

      这是不可能的,因为当您右键单击一个方法时 IDE 不知道使用的是哪个实现。鉴于此示例,IDE 应导航到哪个方法:

      public interface IGreeterService
      {
        string Greet(string person);
      }
      
      public class EnglishGreeterService : IGreeterService
      {
        string Greet(string person)
        {
          return "Hello, " + person + ".";
        }
      }
      
      public class GermanGreeterService : IGreeterService
      {
        string Greet(string person)
        {
          return "Guten Tag, " + person + ".";
        }
      }
      
      public class PersonGreeter
      {
        private readonly IGreeterService _Service;
      
        public PersonGreeter(IGreeterService service)
        {
          _Service = service;
        }
      
        public void SayHallo()
        {
          _Service.Greet("user282807");
        }
      }
      

      不可能知道PersonGreeter类中使用了哪个实现;这就是接口的重点,因此您不依赖特定的实现。当然,这在开发过程中可能会很烦人。

      【讨论】:

      • 它可以提供实现。
      • 当然可以,但这与“转到定义”的名称相矛盾。该方法在接口中定义,这就是它显示的原因。
      • 我同意这就是我提到 Go to Implementation 的原因,如果有多个,至少可以选择,例如右键单击方法,然后右键单击具有要导航到的实现源的上下文菜单。跨度>
      • 如果只有一个实现,通常情况下,我希望它可以实现,并且可以设计 IDE 来实现。
      【解决方案3】:

      如果您使用的是CodeRush,那么您可以使用 Ctrl + Alt + N 调出导航选项并转到实现

      【讨论】:

        【解决方案4】:

        您好,我不知道它是否有用,但我使用 Visual Assist“查找所有参考资料”

        【讨论】:

          【解决方案5】:

          Visual Assist 在 Build 1836(2010 年 11 月 10 日)的 alt+g(转到)命令中包含接口实现。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多