Esiste una scorciatoia di qualche tipo in C# (VS 2008) per implementare automaticamente i metodi delle classi di base virtuali e astratti in una classe derivata?Genera automaticamente le implementazioni dei metodi della classe base
risposta
Per i metodi virtuali, è possibile digitare override
e quindi uno spazio. Intellisense dovrebbe offrirti una lista di opzioni.
Per i metodi e le proprietà astratte, è possibile utilizzare lo smart tag sulla classe di base o l'interfaccia (anche, Ctrl + . o Maiusc + Alt + F10 mostrerà il menu smart tag) per generare gli articoli concreti.
Ad esempio, nel seguente frammento di codice, è possibile inserire il punto di inserimento alla fine del INotifyPropertyChanged
e premere Ctrl + . per poi selezionare Implementa interfaccia, e l'evento PropertyChanged
sarebbe aggiunto al MyClass
:
class MyClass : INotifyPropertyChanged
{
}
Per i metodi virtuali tipo override, dare uno spazio e intellisense mostrerà tutti i metodi che possono essere ereditati.
Basta digitare l'interfaccia che si desidera implementare, e quindi fare clic sulla smart tag, un menu contestuale popup, e poi è possibile selezionare Implementa interfaccia o Implementa interfaccia in modo esplicito:
Tutti i membri ad essere sovrascritta saranno contenute all'interno di una regione di codice che viene chiamata per riflettere il suo scopo.
Tutti i membri avranno una linea che getta un NotImplementedException
.
L'OP parla della classe derivante dalla classe base e non dell'interfaccia di implementazione. – Kangkan
Come gli altri hanno detto, lo smart tag (via Ctrl+.
e Alt+Shft+F10
) risolverà il vostro problema, tuttavia Visual Studio ha un'opzione fastidioso che andrà a capo automaticamente le proprietà/metodi generati con una regione come questa:
#region INotifyPropertyChanged members
...
#endregion
È possibile attivare questa funzionalità passando a Tools > Options > Text Editor > C# > Advanced
. C'è una casella chiamata Implement Interface > Surround generated code with #region
. Assicurati che sia deselezionato.
Penso che la regione sia abbastanza carina perché contrassegna i metodi relativi all'interfaccia e rende anche l'intero gruppo pieghevole. –
Non pensare che questo sia esistito quando è stata posta la domanda originale, ma almeno a partire da VS 2013, è possibile creare automaticamente stub per i metodi astratti & proprietà. Basta fare clic con il pulsante destro del mouse sul nome astratto della classe (nella definizione della classe) e selezionare "Implementa classe astratta". Proprio come CMS ha mostrato con l'implementazione automatica delle interfacce.
CMS ha fatto clic sullo "Smart Tag", la minuscola scatola che appare sotto la M in "MyInterface" nella sua immagine. – Zack
- 1. Identificare le implementazioni della classe base in un array
- 2. Uso della parola chiave override sulle implementazioni dei metodi astratti
- 3. DataGridView genera automaticamente le colonne
- 4. Il costruttore della classe base verrà chiamato automaticamente?
- 5. ereditarietà Python - chiamando i metodi della classe base all'interno della classe figlio?
- 6. Julia genera automaticamente le funzioni ed esportale
- 7. chiamata della classe base
- 8. PHPStorm: Genera automaticamente la documentazione inheritdoc quando si implementano i metodi di una classe genitrice astratta
- 9. Elenco dei metodi di istanza della classe corrente solo
- 10. Utilizzo dei getter nei metodi di classe
- 11. Genera Java Externalizable readExternal()/writeExternal() blocca automaticamente
- 12. Puntatore della classe base contro il puntatore della classe ereditata?
- 13. Creazione di un DynamicType in .NET che implementa un'interfaccia ma utilizza implementazioni dei membri da una classe base
- 14. ottimizzazione della classe base vuota
- 15. Genera automaticamente una classe wrapper in C# utilizzando Composizione
- 16. Implementazioni della coda Java, quale?
- 17. Come documentare le eccezioni dei metodi asincroni?
- 18. NSStringFromClass ([Classe MyEntityClass]) genera un nome di Entità dei dati di base sicuro?
- 19. Ottenere l'elenco dei metodi di una classe
- 20. xCode/dichiarazione dei metodi statici nella classe
- 21. Come passare i metodi migliori in metodi della stessa classe
- 22. Prevenire le sottoclassi dall'aggiunta dei metodi
- 23. sono elencate le implementazioni di tipo situati all'interno o all'esterno l'implementazione della classe
- 24. Definizione dei metodi di classe dinamicamente in Ruby
- 25. Le attuali implementazioni XHR sfruttano HTTP/2?
- 26. Chiamata di metodi sovrascritto nella classe derivata da Base Class
- 27. Metodi di accesso dinamici della classe TypeScript
- 28. C# eventi e metodi della classe
- 29. Metodi definiti al di fuori della classe?
- 30. Richiesta di funzioni virtuali sovrascritte per chiamare le implementazioni di base
Questo funziona bene per le implementazioni di interfaccia. Voglio ottenere una lezione da un'altra classe e non esiste un modo semplice per farlo. – Kangkan
@Kangkan: Se l'altra classe ha metodi astratti, funziona allo stesso modo delle interfacce. tuttavia, se ha metodi virtuali con implementazioni, è necessario ignorare solo quelli necessari. Non sono sicuro di quale "modo semplice" ti manchi, ma semplicemente digita override e uno spazio come sopra e ti fornirà un elenco dei metodi disponibili. Non dovresti aver bisogno di scavalcarle tutte. –
Voglio aggiungere proprietà e metodi aggiuntivi alla mia classe mantenendo tutti i metodi e gli attributi dalla classe base. Quindi mi piacerebbe ottenere i metodi e le proprietà implementate come metodo base.method(). – Kangkan