在我的抽象類中,是否可以偵聽抽象方法並在調用該方法時觸發事件?如果是的話如何?如何聆聽抽象方法?
5
A
回答
2
不是真正的抽象方法總是被超越,並且不能保證被覆蓋調用base.Method()
來實現它。
最好的辦法是創建引發該事件的虛擬方法,然後讓所有的覆蓋呼叫base.Method()
如果你想攔截方法調用,here是關於如何做到這一點的問題。
3
3
做到這一點,最好的方法是如下:
public abstract class MyClass {
public void DoOuter() {
FireEvent();
DoInner();
}
protected abstract void DoInner();
}
當有人想打電話doInner他們打電話DoOuter()
爲了執行它。要指定功能,請覆蓋DoInner()
。因此FireEvent()
始終在指定功能之前被調用......除非它被子類直接調用,這是您無法真正防範的。
相關問題
- 1. WPF如何聆聽BindingBase對象?
- 2. CSocket如何停止聆聽
- 3. 抽象方法重寫抽象方法
- 4. 如何在Backbonejs視圖方法中聆聽mousedown,mousemove和mouseup
- 5. Java:「聆聽」DataStream
- 6. 聆聽到.NET
- 7. 抽象方法
- 8. 抽象方法
- 9. 聆聽Redux動作
- 10. 如何解決不抽象,不覆蓋抽象方法onTabReselected
- 11. 在抽象類中使用抽象類時如何實現抽象方法
- 12. 如何在Laravel中記錄用戶操作?如何聆聽控制器方法?
- 13. 如何使用抽象方法測試抽象類中的方法?
- 14. 抽象類非抽象方法調用
- 15. 抽象類和抽象方法
- 16. 抽象類沒有抽象方法
- 17. 如何正確聆聽Smack中的MultiUserChat?
- 18. 如何聆聽DialogFragment解僱事件
- 19. 如何聆聽192.168與節點?
- 20. 如何聆聽屏幕截圖
- 21. 如何聆聽特定IP地址
- 22. 如何聆聽dll函數調用
- 23. 如何聆聽兒童組件?
- 24. 如何聆聽其組件的JButton?
- 25. 如何聆聽應用權限更改
- 26. VueJs 2.0 - 如何聆聽「道具」變化
- 27. 如何聆聽Android中的GC事件
- 28. 如何聆聽兒童視圖IBAction?
- 29. 如何聆聽鼠標輪按?
- 30. 如何在perl中聆聽URL路由
這實際上是一個C#的問題,所以我編輯答案一點,但主要想法是正確的。 – StriplingWarrior
D'oh。謝謝,StriplingWarrior。 – DJClayworth