2011-08-19 36 views

Trả lời

2

Không thực sự là một phương pháp trừu tượng luôn được ghi đè và không đảm bảo rằng cuộc gọi ghi đè base.Method() để thực hiện nó.

Tốt nhất là để tạo ra một phương pháp ảo mà làm tăng sự kiện và sau đó làm cho tất cả ghi đè bạn gọi base.Method()

Nếu bạn muốn chặn cuộc gọi phương pháp, here là một câu hỏi về làm thế nào để làm điều đó.

3

Tóm tắt hoặc không, bạn đang tìm một khung công tác Inversion of Control (IoC) ở đây, cụ thể là một khung cho phép bạn thực hiện chặn phương thức.

Tôi muốn xem Unity hoặc Spring. Có một vài người khác ngoài kia.

3

Cách tốt nhất để làm điều này là như sau:

public abstract class MyClass { 

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

    protected abstract void DoInner(); 
} 

Khi ai đó muốn gọi doInner họ phải gọi DoOuter() để thực hiện nó. Để chỉ định chức năng bạn ghi đè DoInner(). Vì vậy, FireEvent() luôn được gọi trước khi chức năng DoInner() được chỉ định ... trừ khi nó được gọi trực tiếp bởi một lớp con, mà bạn không thể thực sự bảo vệ chống lại.

+1

Đây thực sự là câu hỏi C#, vì vậy tôi đang chỉnh sửa câu trả lời một chút, nhưng ý tưởng chính là chính xác. – StriplingWarrior

+0

D'oh. Cảm ơn, StriplingWarrior. – DJClayworth

Các vấn đề liên quan