2009-08-11 2 views
61

Есть ли быстрый способ найти все реализации, а не ссылки на метод/свойство интерфейса/etc? Вот некоторые примеры кода:Как вы быстро найдете реализацию (-и) метода интерфейса?

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(); 
    } 
} 

Я хочу, чтобы быстро добраться до SomeClass.GetInt() при рассмотрении SomeOtherClass.TestMethod(). Если я нажму правой кнопкой мыши на _someClass.GetInt() и нажмите «Перейти к определению», он приведет меня к интерфейсу. Если я нажму «Найти все ссылки», я могу потенциально увидеть список всех видов использования ... не только классы, реализующие метод GetInt().

Есть ли более быстрый способ найти это? Любые советы от других разработчиков? Мы используем D.I. для большинства наших зависимостей, что означает, что трассировка через глубоко вложенный код принимает forever.

+1

Используйте Shift + F12, чтобы показать все ссылки, включая определения. –

ответ

21

Alt-End сделает это в ReSharper, я считаю.

+17

Ouch, $ 349 за разработчика. Это то, что мы заплатили за VS2008 pro. –

+10

Вы не запрашивали коммерческое предложение для ReSharper, и то, что вы зарабатываете, - это не наше дело, но подумайте, какие деньги вы делаете, что вы делаете, а затем подумайте, как быстро вы возместить лицензионный сбор. Если цифры правильные, то стоит 350 долларов. Чтобы дать вам некоторую перспективу, я буду утверждать, что после 1 месяца фактического замедления себя достаточно, чтобы изучить все возможности и возможности ReSharper (и, конечно же, я все еще изучаю некоторые из них), когда я работаю, инструмент увеличивает мои производительность как автор кода на 30% на уровне LEAST (это, вероятно, выше, честно говоря, но я не хочу преувеличивать). – lance

+4

Я согласен с тем, что любая компания, которая отказывается от цены resharpers (выпуск C# только дешевле), является идиотом с тех пор, как вы тратите без затрат компанию на 1000 долларов. Я также согласен с мнением копья, что стоимость resharper легко окупится через месяц. –

1

R # имеет во всплывающем меню вариант перехода к реализации, что очень удобно для этого.

+0

Звучит здорово, ничего в VS, о котором вы знаете? –

+0

Не за пределами Найти ссылки, которые вы уже упоминаете. Если вы не знаете R #, я действительно рекомендую вам проверить это. В дополнение к таким функциям он имеет полезную подсказку для кодирования и действительно мощный набор функций рефакторинга. –

+0

Является ли не R # совершенно другим языком программирования, или там R # IDE? Мы создаем приложение ASP.NET MVC ... –

9

Без ReSharper лучший способ сделать это:

Найти в файлах (Ctrl + Shift + F) Найти Что: "класс * ISomeClass" Найти Параметры: "Использование подстановочных"

Это найдет всю реализацию, и вы сможете искать свою функцию в конкретной реализации.

+1

Чувствует странное видение ISomeClass, мы обычно начинаем интерфейсы с «я», а не классы ... но это только мы –

4

вы могли бы попробовать идти с этим плагином:

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

+0

Этот плагин для CodeRush, и кажется, что бесплатная версия CodeRush прекращена , – Constantin

+1

CodeRush Xpress кажется очень живым http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/ –

+0

CodeRush Xpress не поддерживает vs2013 – Ronnie

98

Поскольку я не люблю использовать мышь при кодировании, я обычно

  • перемещения курсора по методу
  • тип ctrl + k clrl + t, чтобы открыть окно иерархии вызовов
  • перейти к Implem .
  • Возвращаемый тип для перехода к выбранной реализации

AFAIK это самый быстрый способ найти реализацию метода, без ReSharper.

(Кстати: вы можете использовать ту же систему, чтобы перейти от реализации методы класса к соответствующему интерфейсу декларации: просто выберите корень)

+0

Wow, довольно круто, спасибо! –

+0

Для этого вам нужен VS2010, верно? – Constantin

+0

Да, я так думаю. –

1

Если интерфейс находится в той же библиотеке, в качестве конкретной модели, вы обычно захотите перейти, вы можете добавить «использование псевдонима» для конкретного объекта. «Использование» - это помощники, и это помогает.

using System; 
using PrimaryImplementation = YourNamespace.YourConcreteObject; 


public interface IYourInterface{ 

} 

Когда вы попадаете в интерфейс, у вас есть быстрый (и грязный) способ добраться до первичной реализации Вашего интерфейса. F12-> F12!

Смежные вопросы