2009-04-02 17 views

risposta

46

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 
{ 
} 
+0

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

+0

@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. –

+0

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

4

Per i metodi virtuali tipo override, dare uno spazio e intellisense mostrerà tutti i metodi che possono essere ereditati.

22

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:

enter image description here

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.

+1

L'OP parla della classe derivante dalla classe base e non dell'interfaccia di implementazione. – Kangkan

1

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.

+1

Penso che la regione sia abbastanza carina perché contrassegna i metodi relativi all'interfaccia e rende anche l'intero gruppo pieghevole. –

3

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.

+0

CMS ha fatto clic sullo "Smart Tag", la minuscola scatola che appare sotto la M in "MyInterface" nella sua immagine. – Zack

Problemi correlati