如何避免直接呼叫事件
本文关键字:呼叫 事件 何避免 | 更新日期: 2023-09-27 18:26:15
这是我们想要处理的方法,它所需要的参数只是eventArgs,这样它就可以从中获得排列的行和列
private void sshResults_ButtonClicked(object eventSender, EditorNotifyEventArgs eventArgs)
但消费者这样称呼它:
this.sshResults_ButtonClicked(null, new EditorNotifyEventArgs(new SpreadView(), null, Row - 1,Column - 1));
我不想这样称呼它,仅仅传递一行和一列就需要太多的资源。重写这个的好方法是什么?也许我可以创建另一个方法,复制粘贴其中第一个方法的整个主体,然后将行和列传递给它?那么它会导致代码冗余?我们使用sshResults_ButtonClicked的地方大约有500个,但我只想更改上面提到的那个,所以我也不想去掉sshResult_ButtonClicked。
将sshResults_ButtonClicked
的适当部分重构为其自己的方法,并从事件处理程序和要显式调用它的位置调用它。
声明以下方法:
private void InvokeEvent(EventHandler<EditorNotifyEventArgs> eventHandler, int row, int column)
{
if (eventHandler != null)
eventHandler(null, new EditorNotifyEventArgs(new SpreadView(), null, row - 1,column - 1));
}
并在需要引发事件时调用它:InvokeEvent(this.YourEventName, Row, Col);
无论如何,我认为您不需要调用事件处理程序——它将在引发事件时被调用。您希望引发一个事件。