Nella mia classe astratta posso ascoltare un metodo astratto e lanciare un evento ogni volta che viene chiamato quel metodo? Se sì come?Come ascoltare un metodo astratto?
5
A
risposta
2
Non proprio come un metodo astratto è sempre nascosto e non vi è alcuna garanzia che l'override chiama base.Method()
a un'implementazione di esso.
La cosa migliore è quella di creare un metodo virtuale, che genera l'evento e poi fare tutte le sostituzioni chiamano base.Method()
Se si vuole intercettare la chiamata di metodo, here è una domanda su come farlo.
3
3
Il modo migliore per farlo è il seguente:
public abstract class MyClass {
public void DoOuter() {
FireEvent();
DoInner();
}
protected abstract void DoInner();
}
Quando qualcuno vuole chiamare doInner devono chiamare DoOuter()
per eseguirlo. Per specificare la funzionalità, sostituisci DoInner()
. Pertanto, FireEvent()
viene sempre chiamato prima che qualsiasi funzionalità di DoInner()
sia specificata ... a meno che non venga chiamata direttamente da una classe figlia, che non può essere protetta.
Problemi correlati
- 1. Un metodo astratto sovrascrive un metodo astratto
- 2. sovraccarico ereditato metodo astratto
- 3. Metodo astratto o virtuale?
- 4. Metodo astratto PHP rispetto al metodo predefinito
- 5. Java "astratto come" metodo con il corpo
- 6. Come posso determinare se un metodo astratto è implementato?
- 7. Richiamo astratto nel metodo reflection di java
- 8. Metodo astratto con lista variabile di argomenti
- 9. Forza il metodo non astratto da sovrascrivere
- 10. parse classe anonima non implementa metodo astratto
- 11. Perché si dichiara un metodo di interfaccia Java astratto?
- 12. Classe astratta senza alcun metodo astratto
- 13. Una classe astratta dovrebbe avere almeno un metodo astratto?
- 14. In Java, quando dovrei usare un metodo astratto in un'interfaccia?
- 15. Definire un metodo astratto senza specificare i parametri
- 16. che cosa è un metodo astratto su un'interfaccia in Java
- 17. Sovrascrittura del metodo di interfaccia predefinito con metodo astratto
- 18. Come chiamare il metodo astratto della classe in java
- 19. Come ascoltare Dev/binder?
- 20. Come smettere di ascoltare NSEvents?
- 21. Sovrascrivere il metodo astratto o utilizzare un singolo metodo in enumerazione?
- 22. @ManyToMany in un MappedSuperclass astratto
- 23. PHP Tipo Hinting Attuazione del metodo astratto - Pattern Repository
- 24. Metodo astratto di tipoScript che utilizza la funzione lambda/freccia
- 25. metodo astratto con tipo di ritorno fortemente tipizzato
- 26. astratto firma del metodo, l'ereditarietà e "Do" convenzione di denominazione
- 27. override metodo astratto al momento della creazione esempio in C#
- 28. Metodo astratto che restituisce un'istanza della classe derivata
- 29. Astratto con ereditario come campo
- 30. Come si prende in giro una classe astratta contenente un metodo astratto interno usando Moq?
Questa è in realtà una domanda C#, quindi sto modificando la risposta un po ', ma l'idea principale è corretta. – StriplingWarrior
D'oh. Grazie, StriplingWarrior. – DJClayworth