如何听抽象的方法

本文关键字:方法 抽象的 何听 | 更新日期: 2023-09-27 18:06:14

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

如何听抽象的方法

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

我会考虑Unity或Spring。还有一些其他的。

最好的方法如下:

public abstract class MyClass {
    public void DoOuter() {
        FireEvent();
        DoInner();
    }
    protected abstract void DoInner();
}

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

并不是真正的抽象方法总是被覆盖,并且不能保证覆盖调用base.Method()来实现它。

最好的办法是创建一个引发事件的虚拟方法,然后让所有的重写调用base.Method()

如果您想拦截方法调用,这里有一个关于如何做到这一点的问题。