Wenn Sie in Visual Studio mit der rechten Maustaste auf einen Methodenaufruf klicken, gelangen Sie zur Implementierung dieser Methode innerhalb einer Klasse, es sei denn, Sie greifen über eine Schnittstelle auf diese Methode zu. In diesem Fall wechseln Sie zur Schnittstellenmethode und nicht zur eigentlichen Implementierung.
Gibt es eine Möglichkeit / Tipps (Tastenkombination oder etwas anderes), um auf diese tatsächliche Implementierung zuzugreifen? Andernfalls müssen Sie nur einen Kommentar hinzufügen, um sich daran zu erinnern, wo Sie ihn implementiert haben, der wirklich nicht produktiv und fehleranfällig ist!
Update: interessante Antworten, aber ich bin nicht wirklich zufrieden, weil alle umständlich sind. Ich werde ein genaues Beispiel geben:
IInterface iInterface = someObject;
iInterface.someMethod();
Wenn Visual Studio nur ein bisschen clever wäre, nur eine Zeile über dem Methodenaufruf zu schauen, würde es tatsächlich sehen, wo sich das eigentliche Objekt befindet. Und das würde mir viele Tastenanschläge ersparen und vermeiden, "Alle Referenzen finden" zu verwenden und dann die Zeilen mit meinen müden Augen zu scannen, um zu sehen, welche Zeile die richtige enthält :)
quelle
Antworten:
Ich mache folgendes:
1) Klicken Sie mit der rechten Maustaste auf die Methode und klicken Sie auf "Anrufhierarchie anzeigen" (oder Verknüpfung Strg + K, Strg + T).
2) Erweitern Sie den Ordner "Implements x", in dem alle Implementierungen dieser Methode angezeigt werden. Klicken Sie auf eine, um dorthin zu gelangen.
Relativ schnell und einfach. Ärgerlicherweise scheint es jedoch kein Äquivalent für die Schnittstelle selbst zu geben.
Update : Ab Visual Studio 2015 Update 1 klicken Sie mit der rechten Maustaste auf eine Methode und wählen Sie Gehe zur Implementierung. Sie können es auch über Tasten> Optionen> Umgebung> Tastatur der Tastenkombination zuordnen und nach dem Befehl Edit.GoToImplementation suchen. Die Standardverknüpfung ist
Ctrl+F12
. (F12
Navigiert zur Benutzeroberfläche).quelle
Mit VS2013 können Sie den Cursor über die Methode setzen und Navigieren zu ... (STRG +,) verwenden. Alle Stellen werden angezeigt, an denen der Name deklariert ist. Funktioniert nicht gut, wenn verschiedene Schnittstellen dieselben Methodennamen verwenden.
Mit VS2015 Update 1 gibt es jetzt eine neue Verknüpfung mit dem Namen "Gehe zur Implementierung".
quelle
Edit.NavigateTo
:)Ich habe eine kostenlose Erweiterung für Visual Studio 2010 und Visual Studio 2012 mit dem Namen Inheritance Margin erstellt, um diese spezielle Funktion bereitzustellen und einen klaren Hinweis darauf zu geben, wann eine Methode aufgrund einer Signaturübereinstimmung eine Schnittstellenmethode implementiert. In der aktuellen Version können Sie mit der rechten Maustaste auf eine beliebige Glyphe klicken, um ein Menü mit Elementen zu erhalten, zu denen Sie navigieren können.
Vererbungsspanne - Visual Studio-Galerie
(Quelle: microsoft.com )
quelle
Klicken Sie mit der rechten Maustaste auf "Alle Referenzen suchen".
Dadurch wird die Codezeile für alle Stellen angezeigt, an denen die Methode verwendet wird, einschließlich der Schnittstellendeklaration und der Implementierungen der Schnittstellenmethode. Sie können dann auf die Zeile klicken, um zum Code-Speicherort zu springen.
quelle
Shift + F12
.Abhängig von der Version von Visual Studio, die Sie haben, sage ich bedingt "Ja".
Ich arbeite derzeit an Ultimate und habe keine anderen Versionen, um dies zu überprüfen. In Ultimate können Sie jedoch den Architektur-Explorer verwenden, um Implementierungen zu finden. Es ist etwas komplizierter als die Rechtsklick-Methode, aber so funktioniert es.
View->Architecture Explorer
(oder STRG-W, N)Types
. Klicke hierInterfaces
Members
wird dann rechts angezeigt. Klicken Sie auf diese SchaltflächeImplemented by
(unterInbound Navigation
) und es wird eine Liste der Implementierungen Ihrer Schnittstelle angezeigt.quelle
Innerhalb von 2012 Ultimate können Sie die Benutzeroberfläche im Solution Explorer durchsuchen. Klicken Sie mit der rechten Maustaste auf die Benutzeroberfläche und wählen Sie "Abgeleitete Typen". Die implementierten Klassen werden im Lösungs-Explorer angezeigt. Ich bin mir nicht sicher, ob es in Express funktioniert.
quelle
Visual Studio 2015 Update 1 (veröffentlicht im Dezember 2015) hat jetzt standardmäßig eine Rechtsklick-Funktion zur Implementierung hinzugefügt.
quelle
Wenn Sie Resharper verwenden, können Sie durch Drücken von STRG + F12 direkt zur Klassenmethode wechseln!
quelle
Das ist nicht möglich. Was Sie beschreiben, wäre nur dann sinnvoll, wenn die Schnittstelle auf eine Implementierung beschränkt wäre.
Betrachten Sie dieses Beispiel:
Wenn Sie verwenden, gehen Sie zur Implementierung von Write in UseIWrite verwenden, gelangen Sie zur Deklaration der Schnittstelle, da zu diesem Zeitpunkt jede der IWrite-Implementierungen an die Methode übergeben werden kann.
Zum Glück bieten Ihnen einige Tools wie beispielsweise ReSharper die Möglichkeit , alle Verwendungszwecke der Methode zu finden, sodass Sie problemlos zur gewünschten Implementierung navigieren können.
quelle
Visual Studio mit Update 1 implementiert diese Funktion jetzt! Klicken Sie einfach mit der rechten Maustaste auf das Mitglied und Sie sollten "Zur Implementierung gehen" direkt unter "Zur Definition gehen" sehen.
quelle
Schauen Sie sich diesen neuen kostenlosen Visual Studio 2013 Extension - Implementator an . Es fügt dem Kontextmenü des Visual Studio-Editors die Option "Zur Implementierung wechseln" hinzu.
Es ist nicht so zuverlässig und schnell wie Resharper, aber es macht seinen Job ganz gut.
quelle
Sie können die
Ctrl + F12
Verknüpfung versuchen . Es führt Sie zur Implementierung, genauso wie es Sie zu Nicht-Schnittstellenmethoden mit F12 führt. [Ich habe es in VS 2017 versucht, bin mir bei anderen Versionen nicht sicher]quelle
Visual Studio kann Ihnen nur sagen, wo darauf verwiesen wird, dies ist jedoch möglicherweise zu grob.
Es gibt andere Tools, die Ihnen mehr über die Struktur Ihrer Anwendung erzählen können, einschließlich welcher Klasse welche Schnittstelle implementiert, welche Methode welche andere Methode außer Kraft setzt und so weiter. Ich persönlich bevorzuge Understand For C / C ++.
quelle
Wenn Sie zur Deklaration gehen, wird die Schnittstellenmethode geöffnet. Wenn Sie zur Implementierung gehen, erhalten Sie die Klassen, die den Code für diese Schnittstellenmethode implementieren (oder nicht die Schnittstellenmethode selbst), oder listen sie für Sie auf.
Aktualisieren
Wie Jon Skeet in den Kommentaren betonte (und ich habe es vor der Beantwortung verpasst), könnte die von mir beschriebene Funktion eine ReSharper-Funktion sein ... keine Visual Studio-Funktion.
quelle
Nein. Dies ist trotz der aufwändigen Speichercodestruktur, die von VS verwaltet wird, nicht möglich. Die Code-Navigation ist ziemlich ... geizig.
Es scheint, dass die einzige Alternative eine globale Suche mit "Alle Referenzen suchen" ist, gefolgt von einer manuellen Suche in der resultierenden Liste, um typisierte Wertdeklarationen, Konvertierungen usw. oder die Verwendung anderer Tools in VS außer dem Code-Editor auszuschließen. Alles ziemlich komplex und enttäuschend.
quelle