2010-11-20 58 views
6

有没有Visual Studio的扩展,它允许从方法执行“定义”并让它直接导航到具体的实现而不是接口?我的代码大部分是基于inteface的,正确的,如果我去定义它直接到接口,这是有道理的,很高兴有具体实现..感谢转到关于混凝土类型的定义

回答

4

另外在视觉工作室中,您可以使用find all references,方法图标与通话不同,您也可以通过F8导航它们。

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

2

这是不可能的,因为IDE doesn当你点击一个方法时,不知道使用哪个实现。鉴于此例中,该方法应该在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使用;这就是接口的要点,所以你不需要依赖特定的实现。当然,这在开发过程中可能会很麻烦。

+2

它可以提供实现。 – 2010-11-20 20:38:16

+0

当然可以,但这与名称“定义”相矛盾。该方法在界面中定义,这就是它显示的原因。 – Femaref 2010-11-20 20:40:20

+0

我同意这就是为什么我提到转到实施,如果有多个,至少可以选择,例如右键单击方法然后上下文菜单,具有实现源导航到。 – user282807 2010-11-21 01:48:38

0

嗨,我不知道它可能是有用的或没有,但我使用Visual如果您在使用resharper它提供去执行,如果有不同的实现方式可以在不同的实施中进行选择辅助“查找所有引用”

0

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

1

如果您正在使用CodeRush那么你可以使用Ctrl + Alt + N,弹出导航选择,去实现