2011-08-19 9 views

cevap

2

Aslında soyut bir yöntem her zaman için geçerli değildir ve bir uygulama için geçersiz kılma çağrısının base.Method() olduğunu garanti etmez.

En iyi bahis olayı harekete geçiren bir sanal yöntem oluşturmak ve daha sonra yöntem çağrısı müdahale istiyorsanız tüm geçersiz kılmaları base.Method()

diyoruz yapmaktır, here o nasıl yapılacağı hakkında bir sorudur.

3

Soyut ya da hayır, burada bir Kontrol Tersi (IoC) çerçevesini arıyoruz, özellikle de yöntem araya girmenizi sağlayan bir tanesi.

Unity veya Spring. Dışarıda birkaç tane var. aşağıdaki gibi

3

Bunu yapmanın en iyi yoludur:

birisi bunu yürütmek amacıyla DoOuter() aramak zorunda doInner aramak istiyor
public abstract class MyClass { 

    public void DoOuter() { 
     FireEvent(); 
     DoInner(); 
    } 

    protected abstract void DoInner(); 
} 

. İşlev belirtmek için DoInner() geçersiz kılın. FireEvent(), her zaman DoInner() işlevselliği belirtilirse her zaman çağrılır. Bu, doğrudan karşı karşıya kalamayacağınız bir çocuk dersi tarafından çağrılmadıkça.

+1

Bu aslında bir C# sorusu, bu yüzden cevabı biraz düzenliyorum, ancak ana fikir doğru. – StriplingWarrior

+0

D'oh. Teşekkürler, StriplingWarrior. – DJClayworth