向事件添加事件

时间:2013-07-25 16:46:45

标签: c# winforms events

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

我看到这是在很多Web上的框架中完成的,比如Wordpress和Symfony,但我想在我的WinForms应用程序上做类似的事情。

我正在寻找什么样的设计模式来实现这一点,所以我可以去Google吧。

1 个答案:

答案 0 :(得分: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);
}

您只能从自己的类中调用事件。这不是问题,因为能够做到这一点会导致真正令人困惑的代码。始终检查它是否为null,因为如果没有订阅者,它将为null,并在您调用它时通过NullReferenceException