W programie Visual Studio, klikając prawym przyciskiem myszy wywołanie metody, przechodzisz do implementacji tej metody w klasie, z wyjątkiem sytuacji, gdy uzyskujesz dostęp do tej metody przez interfejs: w takim przypadku przechodzisz do metody interfejsu, a nie do rzeczywistej implementacji.
Czy istnieje sposób / wskazówki (skrót klawiszowy lub cokolwiek), aby uzyskać dostęp do tej faktycznej implementacji? W przeciwnym razie utkniesz, aby dodać komentarz, aby pamiętać, gdzie go wdrożyłeś, co naprawdę nie jest produktywne i podatne na błędy!
Aktualizacja: ciekawe odpowiedzi, ale nie jestem do końca zadowolony, ponieważ wszystkie są uciążliwe. Podam dokładny przykład:
IInterface iInterface = someObject;
iInterface.someMethod();
W rzeczywistości, jeśli Visual Studio był trochę sprytny, aby spojrzeć tylko o jedną linię powyżej wywołania metody, zobaczyłby, gdzie jest prawdziwy obiekt. Pozwoliłoby mi to zaoszczędzić wiele naciśnięć klawiszy i uniknąć użycia polecenia „znajdź wszystkie referencje”, a następnie zeskanuj moje linie zmęczonymi oczami, aby zobaczyć, która linia zawiera właściwą :)
źródło
Odpowiedzi:
Wykonuję następujące czynności:
1) Kliknij metodę prawym przyciskiem myszy i kliknij „Wyświetl hierarchię połączeń” (lub skrót Ctrl + K, Ctrl + T)
2) Rozwiń folder „Implements x”, który wyświetli wszystkie implementacje tej metody. Kliknij jeden, aby tam przejść.
Stosunkowo szybki i łatwy. Irytujące wydaje się, że nie ma odpowiednika dla samego interfejsu.
aktualizacja : od wersji 1 programu Visual Studio 2015 kliknij prawym przyciskiem myszy metodę i wybierz opcję przejdź do implementacji. Możesz także zamapować go na skrót klawiaturowy za pomocą Narzędzia> Opcje> Środowisko> Klawiatura i wyszukaj polecenie Edit.GoToImplementation. Domyślny skrót to
Ctrl+F12
. (F12
przejdzie do interfejsu).źródło
W VS2013 można umieścić kursor nad metodą i użyć opcji Nawiguj do ... (CTRL +,), a wyświetli się wszystkie miejsca, w których zadeklarowano nazwę. Nie działa dobrze, jeśli różne interfejsy używają tych samych nazw metod.
Wraz z aktualizacją 1 VS2015 wprowadzono nowy skrót o nazwie „Przejdź do implementacji”.
źródło
Edit.NavigateTo
:)Stworzyłem bezpłatne rozszerzenie dla Visual Studio 2010 i Visual Studio 2012 o nazwie Margines dziedziczenia, aby zapewnić tę konkretną funkcję, a także dać wyraźne wskazanie, kiedy metoda implementuje metodę interfejsu z powodu dopasowania podpisu. W bieżącej wersji możesz kliknąć dowolny glif prawym przyciskiem myszy, aby uzyskać menu elementów do nawigacji.
Margines dziedziczenia - Visual Studio Gallery
(źródło: microsoft.com )
źródło
Kliknij prawym przyciskiem myszy, a następnie „Znajdź wszystkie odniesienia”.
Spowoduje to wyświetlenie wiersza kodu dla wszystkich miejsc, w których stosowana jest metoda, w tym deklaracja interfejsu i implementacje metody interfejsu. Następnie możesz kliknąć linię, aby przejść do lokalizacji kodu.
źródło
Shift + F12
.W zależności od posiadanej wersji programu Visual Studio powiem warunkowo „tak”.
Obecnie działam na Ultimate i nie mam innych wersji, aby to sprawdzić. To powiedziawszy, w Ultimate możesz użyć Eksploratora architektury, aby znaleźć implementacje. Jest to trochę bardziej zaangażowane niż metoda kliknięcia prawym przyciskiem, ale oto jak to działa.
View->Architecture Explorer
(lub CTRL-W, N)Types
. Kliknij toInterfaces
Members
prawej stronie pojawi się pionowy przycisk z napisem . Kliknij ten przyciskImplemented by
(poniżejInbound Navigation
), a zobaczysz listę implementacji twojego interfejsu.źródło
W Ultimate 2012 możesz przeszukiwać interfejs w eksploratorze rozwiązań. Kliknij interfejs prawym przyciskiem myszy i wybierz „Typy pochodne”, zaimplementowane klasy zostaną wyświetlone w eksploratorze rozwiązań. Nie jestem pewien, czy to działa w trybie ekspresowym.
źródło
W Visual Studio 2015 Update 1 (wydanej w grudniu 2015) dodano teraz funkcję „Przejdź do implementacji” jako standard.
źródło
Dla osób korzystających z Resharpera naciśnięcie CTRL + F12 spowoduje przejście bezpośrednio do metody klasowej!
źródło
To jest niemożliwe. To, co opisujesz, miałoby sens tylko wtedy, gdyby interfejs był ograniczony do 1 implementacji.
Rozważ ten przykład:
Jeśli użyjesz przejdź do implementacji zapisu w UseIWrite, nastąpi przejście do deklaracji interfejsu, ponieważ w tym momencie każda z implementacji IWrite może zostać przekazana do metody.
Na szczęście niektóre narzędzia, takie jak na przykład ReSharper, pozwalają znaleźć wszystkie zastosowania metody, dzięki czemu można łatwo przejść do żądanej implementacji.
źródło
Program Visual Studio z aktualizacją 1 implementuje teraz tę funkcję! Wystarczy kliknąć członka prawym przyciskiem myszy, a pod „Idź do definicji” powinieneś zobaczyć „Idź do implementacji”.
źródło
Sprawdź to nowe bezpłatne rozszerzenie Visual Studio 2013 - Implementator . Dodaje opcję „Idź do implementacji” do menu kontekstowego edytora Visual Studio.
Nie jest tak niezawodny i szybki jak Resharper, ale dobrze sobie radzi.
źródło
Możesz spróbować
Ctrl + F12
skrótu. Doprowadzi cię do implementacji, tak jak poprowadzi Cię do metod nieinterfejsowych przy użyciu F12. [Próbowałem w VS 2017, nie jestem pewien co do innych wersji]źródło
Visual Studio może tylko powiedzieć, gdzie jest odwołanie, ale może to być zbyt gruboziarniste.
Istnieją inne narzędzia, które mogą powiedzieć ci więcej o strukturze twojej aplikacji, w tym o tym, która klasa implementuje który interfejs, która metoda unieważnia inną metodę i tak dalej. Osobiście wolę używać Understand For C / C ++.
źródło
Przejście do deklaracji otworzy metodę interfejsu. Przechodząc do implementacji, zabiorę Cię lub wyświetli listę klas, które implementują kod dla tej metody interfejsu (nie samej metody interfejsu).
Aktualizacja
Jak zauważył Jon Skeet w komentarzach (i brakowało mi przed odpowiedzią), funkcja, którą opisałem, może być funkcją ReSharper ... a nie Visual Studio.
źródło
Nie. Nie jest to możliwe, pomimo skomplikowanej struktury kodu pamięci utrzymywanej przez VS, nawigacja kodu jest raczej ... skąpa.
Wydaje się, że jedyną alternatywą jest globalne wyszukiwanie z „Find All Reference”, a następnie ręczne wyszukiwanie wynikowej listy w celu wykluczenia deklaracji wartości wpisanych, konwersji itp. Lub użycie innych narzędzi w VS innych niż edytor kodu. Wszystko raczej złożone i rozczarowujące.
źródło