如何听抽象方法?

时间:2011-08-19 19:02:12

标签: c# events abstract-class

在我的抽象类中,我可以监听抽象方法并在调用该方法时触发事件吗?如果是的话怎么样?

3 个答案:

答案 0 :(得分:3)

抽象与否,您在这里寻找一个控制反转(IoC)框架,特别是允许您进行方法拦截的框架。

我会看UnitySpring。还有其他几个。

答案 1 :(得分:3)

执行此操作的最佳方法如下:

public abstract class MyClass {

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

    protected abstract void DoInner();
}

当有人想要调用doInner时,他们必须调用DoOuter()才能执行它。要指定覆盖DoInner()的功能。所以FireEvent()总是在指定任何DoInner()功能之前被调用...除非它被子类直接调用,你无法真正防范它。

答案 2 :(得分:2)

实际上并不总是覆盖抽象方法,并且无法保证覆盖调用base.Method()来实现它。

您最好的办法是创建一个虚拟方法来引发事件,然后将所有覆盖调用base.Method()

如果您想拦截方法调用,here是一个关于如何执行此操作的问题。

相关问题