Di Visual Studio, ketika Anda mengklik kanan pemanggilan metode, Anda pergi ke implementasi metode itu di dalam kelas kecuali jika Anda mengakses metode ini melalui antarmuka: dalam hal ini Anda pergi ke metode antarmuka bukan ke implementasi yang sebenarnya.
Apakah ada cara / tips (pintasan kunci atau apa pun) untuk mengakses implementasi aktual ini? Kalau tidak, Anda terjebak untuk menambahkan beberapa komentar hanya untuk mengingat di mana Anda menerapkannya yang benar-benar tidak produktif dan rentan kesalahan!
Perbarui: jawaban yang menarik tetapi saya tidak benar-benar puas karena semuanya rumit. Saya akan memberikan contoh yang tepat:
IInterface iInterface = someObject;
iInterface.someMethod();
Sebenarnya jika Visual Studio hanya sedikit pintar untuk melihat hanya satu baris di atas metode panggilan itu akan melihat di mana objek sebenarnya. Dan itu akan menyelamatkan saya banyak penekanan tombol dan menghindari menggunakan "menemukan semua referensi" dan kemudian memindai garis dengan mata lelah saya untuk melihat baris mana yang berisi yang benar :)
sumber
Jawaban:
Saya melakukan hal berikut:
1) Klik kanan pada metode dan klik "Lihat hierarki panggilan" (atau pintas Ctrl + K, Ctrl + T)
2) Buka folder "Implements x" yang kemudian akan menunjukkan kepada Anda semua implementasi metode itu. Klik satu untuk pergi ke sana.
Relatif cepat dan mudah. Mengganggu meskipun sepertinya tidak ada yang setara untuk antarmuka itu sendiri.
pembaruan : pada Visual Studio 2015 pembaruan 1, klik kanan pada metode dan pilih pergi ke implementasi. Anda juga dapat memetakannya ke pintasan keyboard melalui Alat> Opsi> Lingkungan> Keyboard dan mencari perintah Edit.GoToImplementation. Pintasan default adalah
Ctrl+F12
. (F12
akan menavigasi ke antarmuka).sumber
Dengan VS2013 seseorang dapat menempatkan kursor di atas metode, dan menggunakan Navigate To ... (CTRL +,), dan itu akan menampilkan semua lokasi di mana nama tersebut dideklarasikan. Tidak berfungsi dengan baik jika antarmuka yang berbeda menggunakan nama metode yang sama.
Dengan Pembaruan 1 VS2015 sekarang ada jalan pintas baru yang disebut "Go To Implementation".
sumber
Edit.NavigateTo
:)Saya membuat ekstensi gratis untuk Visual Studio 2010 dan Visual Studio 2012 yang disebut Inheritance Margin untuk menyediakan fitur khusus ini, serta memberikan indikasi yang jelas ketika suatu metode mengimplementasikan metode antarmuka karena pencocokan tanda tangan. Dalam versi saat ini, Anda dapat mengklik kanan setiap mesin terbang untuk mendapatkan menu item untuk dinavigasi.
Margin Warisan - Galeri Visual Studio
(sumber: microsoft.com )
sumber
Klik kanan lalu "Temukan Semua Referensi".
Ini akan menampilkan baris kode untuk semua tempat di mana metode ini digunakan termasuk deklarasi antarmuka dan implementasi metode antarmuka. Anda kemudian dapat mengklik pada baris untuk melompat ke lokasi kode.
sumber
Shift + F12
.Bergantung pada versi Visual Studio yang Anda miliki, saya akan mengatakan dengan syarat "ya."
Saya saat ini beroperasi di Ultimate, dan tidak memiliki versi lain untuk memverifikasi ini. Yang mengatakan, dalam Ultimate, Anda dapat menggunakan Arsitektur Explorer untuk menemukan implementasi. Ini sedikit lebih terlibat daripada metode klik kanan, tapi inilah cara kerjanya.
View->Architecture Explorer
(atau CTRL-W, N)Types
. Klik iniInterfaces
Members
akan muncul di sebelah kanan. Klik tombol ituImplemented by
(di bawahInbound Navigation
) dan itu akan memberikan daftar implementasi antarmuka Anda.sumber
Dalam 2012 Ultimate, Anda dapat mencari antarmuka di explorer solusi. Klik kanan antarmuka dan pilih "Derived Types", kelas yang diimplementasikan akan ditampilkan dalam solusi explorer. Tidak yakin apakah itu berfungsi secara ekspres.
sumber
Visual Studio 2015 Pembaruan 1 (dirilis Desember 2015) sekarang telah menambahkan klik kanan fitur 'Pergi Ke Implementasi' sebagai standar.
sumber
Bagi orang yang menggunakan Resharper, menekan CTRL + F12 akan membuat Anda langsung menuju metode kelas!
sumber
Ini tidak mungkin. Apa yang Anda gambarkan akan masuk akal hanya jika antarmuka akan terbatas pada 1 implementasi.
Pertimbangkan contoh ini:
Jika Anda menggunakan pergi ke implementasi Write di UseIWrite, itu akan membawa Anda ke deklarasi antarmuka, karena pada saat itu salah satu implementasi IWrite dapat diteruskan ke metode.
Untungnya beberapa alat seperti misalnya ReSharper menawarkan Anda untuk menemukan semua penggunaan metode ini, sehingga Anda dapat dengan mudah menavigasi ke implementasi yang diinginkan.
sumber
Visual Studio dengan Pembaruan 1 sekarang mengimplementasikan fitur ini! Cukup klik kanan anggota dan Anda akan melihat "Pergi ke implementasi" tepat di bawah "Pergi ke definisi".
sumber
Lihat perpanjangan Visual Studio 2013 baru - Implementator . Ini menambahkan opsi "Pergi ke implementasi" ke menu konteks editor Visual Studio.
Ini tidak begitu andal dan secepat Resharper, tetapi apakah itu pekerjaan dengan baik.
sumber
Anda dapat mencoba
Ctrl + F12
pintasan. Ini akan mengarahkan Anda ke implementasi sama seperti itu akan mengarahkan Anda ke metode non-antarmuka menggunakan F12. [Saya mencobanya di VS 2017, tidak yakin tentang versi lain]sumber
Visual Studio hanya dapat memberi tahu Anda di mana itu direferensikan, tetapi ini mungkin terlalu kasar.
Ada alat lain yang dapat memberi tahu Anda lebih banyak tentang struktur aplikasi Anda, termasuk kelas mana yang mengimplementasikan antarmuka mana, metode mana yang mengesampingkan metode mana yang lain, dan sebagainya. Saya pribadi lebih suka menggunakan Understand For C / C ++.
sumber
Pergi ke deklarasi akan membuka metode antarmuka. Pergi ke implementasi, akan membawa Anda, atau daftar untuk Anda, kelas-kelas yang mengimplementasikan kode untuk metode antarmuka itu (bukan metode antarmuka itu sendiri).
Memperbarui
Seperti yang ditunjukkan oleh Jon Skeet dalam komentar (dan saya ketinggalan sebelum menjawab), fitur yang saya jelaskan mungkin fitur ReSharper ... bukan Visual Studio.
sumber
Tidak. Ini tidak mungkin, meskipun struktur kode memori rumit yang dikelola oleh VS, navigasi kode agak ... pelit.
Tampaknya satu-satunya alternatif adalah pencarian global dengan "Temukan Semua Referensi" diikuti dengan pencarian manual dari daftar yang dihasilkan untuk mengecualikan deklarasi nilai yang diketik, konversi, dll. Atau penggunaan alat lain dalam VS selain editor kode. Semua agak rumit dan mengecewakan.
sumber