我有一个我创建的HTTP类,如果可能的话,我会在每次调用HTTP.post()或HTTP.get()时附加一个方法。我希望能够在之前或之后附上活动。
我看到这是在很多Web上的框架中完成的,比如Wordpress和Symfony,但我想在我的WinForms应用程序上做类似的事情。
我正在寻找什么样的设计模式来实现这一点,所以我可以去Google吧。
答案 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
。