Domanda

Supponi di avere un'interfaccia definita in C #. Qual è il metodo più semplice per trovare tutte le classi che forniscono un'implementazione dell'interfaccia?

Il metodo della forza bruta sarebbe usare " Trova riferimenti " in Visual Studio e cercare manualmente i risultati per separare gli utilizzi dalle implementazioni, ma per un'interfaccia in una base di codice di grandi dimensioni che è pesantemente referenziata con relativamente poche implementazioni, ciò può richiedere molto tempo ed essere soggetto a errori .

In Java, l'esecuzione di javadoc sul codebase (usando l'opzione -private per includere le classi private) genererebbe una pagina di documentazione per l'interfaccia (es. Comparable ) che include tutte le classi di implementazione per l'interfaccia nonché eventuali interfacce secondarie (sebbene non includa le classi di implementazione di le interfacce secondarie, queste sono relativamente facili da determinare eseguendo il drill down nelle sottointerfacce elencate). È questa funzionalità che sto cercando ma con C # e Visual Studio.

È stato utile?

Soluzione

(Modifica in base al commento ...)

Se ReSharper è installato:

In Visual Studio, fai clic con il pulsante destro del mouse sul nome del tipo e scegli " Vai a Inheritor " ;. In alternativa, seleziona il nome del tipo, quindi vai su ReSharper / View / Type Hierarchy per aprire una nuova scheda. (Il menu ti mostrerà la scorciatoia da tastiera - questo può variare, motivo per cui ho spiegato come trovarlo :)

Se non si dispone di ReSharper:

  • Puoi utilizzare Reflector , che è in grado di mostrarti tutta la gerarchia dei tipi facilmente: proprio sotto il nome del tipo sono presenti elementi espandibili per tipi di base e tipi derivati. Strumenti simili sono disponibili come ILSpy e dotPeek .
  • Acquista ReSharper - è un ottimo strumento :)

Altri suggerimenti

È possibile fare clic con il pulsante destro del mouse sul nome di un metodo (definizione nell'interfaccia o implementazione in un'altra classe) e scegliere Visualizza gerarchia chiamate. Nella finestra Gerarchia chiamate è presente " Implements " cartella in cui è possibile trovare tutte le posizioni dell'implementazione del metodo di interfaccia.

Posiziona il cursore sulla classe o sul tipo di interfaccia e

CTRL + F12

Con Visual Studio 2010+

Fare clic con il pulsante destro del mouse su un metodo membro e scegliere Visualizza gerarchia chiamate. Espandi la cartella Implements. Questo elenca tutti i tipi che implementano l'interfaccia a cui appartiene il metodo.

inserisci qui la descrizione dell'immagine

Con Resharper 7

Fai clic con il pulsante destro del mouse sull'interfaccia > Vai a > Simboli derivati. I simboli elencati in grassetto derivano direttamente dall'interfaccia. I simboli non in grassetto derivano da una superclasse.

inserisci qui la descrizione dell'immagine

Per coloro che usano Visual Studio 2015, esiste questa fantastica estensione chiamata Vai all'implementazione . Provalo.

Dopo aver installato l'estensione, puoi semplicemente fare clic con il pulsante destro del mouse su qualsiasi occorrenza dell'interfaccia (ad es. IUrlShortener) e fare clic sul menu Vai a implementazione . Se hai solo una classe che implementa l'interfaccia, facendo clic sul menu si accederà direttamente alla classe. Se hai più di una classe che implementa l'interfaccia, elencherà tutte le classi.

Per coloro che utilizzano Visual Studio 2015, installare Visual Studio 2015 Update 1 RC. Dal Blog di Visual Studio :

  

Oggi abbiamo rilasciato il Visual Studio 2015 Update 1 RC, che si basa sul CTP Update 1 rilasciato tre settimane fa. Oltre alle funzionalità introdotte nel CTP come descritto qui, il Candidato alla versione include quanto segue:

     
      
  • Vai a Implementazione . La funzionalità che molti di voi stavano aspettando: basta fare clic con il tasto destro del mouse su un'interfaccia o un metodo astratto e selezionare questo comando per passare all'implementazione.
  •   

Non credo che questa funzionalità sia integrata in VS ma IIRC Resharper ha questo.

È possibile eseguire una ricerca di espressioni regolari per l'interfaccia.

:(\ *[^},]+,)*\ *IMyInterfaceName

CTRL + MAIUSC + F avvia la seguente finestra:

Schermata di Visual Studio

Preferisco " Naviga verso ... " opzione. Con il cursore sulla chiamata di funzione, provare quanto segue:

Tasto di scelta rapida:

  1. Ctrl +, (Ctrl + virgola)

Menu:

  1. Menu Modifica
  2. Fai clic su " Naviga verso ... "

I vantaggi:

  • Non mostra tutti i riferimenti come " Trova tutti i riferimenti "
  • Mostra il & Quot; tipo " dell'implementazione in modo da notare quale è la tua interfaccia

Usa Maiusc + F12 per mostrare tutti i riferimenti, comprese le definizioni.

Se si utilizza il collegamento ALT + FINE per il resharper potrebbe aiutare a trovare tutti gli ereditari.

Ho sentito dire (nessuna esperienza me stesso) che doxygen è .Net come javadoc è java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top