2016-04-09 29 views
2

我想問這個問題,因爲我的代碼有一些安全機制。 這看起來似乎沒用,但它已經讓我失去了很多時間調試。自動觸發基類函數

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

有沒有在C#的方式來自動地火了CatUpdateSomeValues功能每當CatMod函數被調用(而不必從CatMod功能手動調用它)?

並且如果可能的話,對所有派生類使它相同?

回答

2

號你可以通過引入另一種保護方法是派生類可以覆蓋解決這個問題,使公衆一個電話到它一旦所有必要的處理完成:

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

隨着派生類將執行ModImpl()如果他們想要做一些額外的處理,並且您確定當調用Mod時仍然會發生// do stuff

+0

謝謝你的答案。我猜像我想的那樣,在基類中沒有辦法做到這一點。 –