如何听抽象的方法
本文关键字:方法 抽象的 何听 | 更新日期: 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()
如果您想拦截方法调用,这里有一个关于如何做到这一点的问题。