2009-09-14 5 views
6

Esiste un modo per non essere obbligati a includere membri con la proprietà MustOverride quando si eredita? Sto lavorando su un MembershipProvider personalizzato e ho solo bisogno di accedere ad alcuni membri. È puramente una cosa estetica - odio solo dover eliminare 100 righe di dichiarazioni di membri inutilizzate.Solo curioso, in ogni modo, MustOverride in C#?

risposta

13

È possibile fare clic con il tasto destro del mouse sulla classe ereditata e selezionare "Implementa questo ..." e creerà le definizioni del metodo per il lancio di NotImplementedException() finché non si riscrive il codice del metodo.

+0

Spiffy! Ciò risparmia un po 'di tempo. Grazie. –

5

No, non c'è.
Btw, MustOverride è solitamente chiamato astratto in C#.

+6

Non viene solitamente chiamato, viene chiamato IS. – Will

7

MustOverride (abstract in C#) specifica che deve essere sovrascritto. Non c'è modo di aggirarlo.

È possibile fare in modo che Visual Studio stub funzioni, ma è necessario che esistano affinché la classe sia istanziata.

Un'altra opzione: se si eseguono più versioni, è possibile creare una classe che implementa i membri (lanciando NotImplementedException o non facendo nulla) e quindi deriva dalla classe THAT. La tua versione concreta avrebbe solo bisogno di sostituire i metodi specifici che desideri.

2

Sì, c'è ... Dichiara la tua classe anche come astratta! :-P

Ora, seriamente, pensaci. Se non si implementi un membro astratto in una classe non astratta, immagina cosa succederebbe in fase di esecuzione, quando si chiama un metodo senza implementazione? In C++, questo era possibile, e si otterrebbe un errore "Pure virtual function call".

Problemi correlati