1

我创建了一个 HTTP 类,如果可能,我会在每次调用 HTTP.post() 或 HTTP.get() 时附加一个方法。我希望能够在之前或之后附加事件。

我看到很多网络框架都这样做了,比如 Wordpress 和 Symfony,但我想在我的 WinForms 应用程序上做类似的事情。

我正在寻找什么设计模式来实现这一点,以便我可以去谷歌搜索它。

4

1 回答 1

4

您可以在对象上创建事件并从代码中的任何位置调用它们。我经常这样做。

public event EventHandler Getting;
public event EventHandler Setting;

void get()
{
    if (Getting  != null)
        Getting.Invoke(this, EventArgs.Empty);
}

void post()
{
    if (Setting  != null)
        Setting.Invoke(this, EventArgs.Empty);
}

然后其他类可以像这样处理这些事件:

myHttp.Getting += myHttp_Getting;

public void myHttp_Getting(object sender, EventArgs e)
{

}

编辑:

您也可以像这样调用事件:

void post()
{
    if (Setting  != null)
        Setting(this, EventArgs.Empty);
}

您只能从其自己的类中调用事件。这不是问题,因为否则会导致非常混乱的代码。始终检查它是否为空,因为如果没有订阅者,它将为空,并且NullReferenceException在您调用它时将通过 a 。

于 2013-07-25T17:14:09.137 回答