2016-04-09 6 views
2

Ich möchte diese Frage wegen eines Sicherheitsmechanismus für meinen Code stellen. Das mag wie nutzlos erscheinen, aber es hat mich schon viel Zeit zum Debuggen verloren.Automatisch Basisfunktionen auslösen

public class AnimalClass 
{ 
    virtual void Mod{} 
    virtual void UpdateSomeValues{} 
} 
public class CatClass : AnimalClass 
{ 
    override void Mod{} 
    override void UpdateSomeValues{} 
} 

Gibt es eine Möglichkeit in C# automatisch Cat zu feuern 's UpdateSomeValues Funktion, wenn Cat' s Mod Funktion aufgerufen wird (ohne es manuell von Cat ‚s Mod Funktion aufrufen zu müssen)?

Und wenn möglich, machen Sie dasselbe für alle abgeleiteten Klassen?

Antwort

2

Nr könnten Sie das Problem lösen, indem Sie einen anderen, geschützten Verfahren einzuführen, die abgeleiteten Klassen überschrieben werden können, und machen die Öffentlichkeit ein Anruf in sie einmal alle notwendigen Verarbeitung erfolgt:

public class AnimalClass 
{ 
    public void Mod() 
    { 
     // do stuff 
     ModImpl(); 
    } 
    protected virtual ModImpl() {} 
} 

Mit, dass abgeleitete Klassen würde implementieren ModImpl(), wenn sie einige zusätzliche Verarbeitung tun möchten, und Sie sind sicher, dass // do stuff immer noch passiert, wenn Mod aufgerufen wird.

+0

Danke für die Antwort. Ich denke, wie ich dachte, gibt es keinen Weg, das in der Basisklasse zu tun. –