事件触发时的.NET注入行为

时间:2011-04-13 20:29:16

标签: .net design-patterns

所以我有一个方法,我希望每次某个对象被调用,在这种情况下Form有一个特定的事件被触发,在这种情况下是FormClosing。现在我可以做的是创建一个继承MyForm的{​​{1}}然后执行我需要的东西

Form

但是,如果我不想做上述事情,该怎么办?是否有一些框架或模式基本上让我将想要的行为注入代码?

如果这个不够清楚,我可以解释更多。

1 个答案:

答案 0 :(得分:1)

将一个可以设置为true或false的属性添加到MyForm类是否足以告诉它不要调用该方法?我个人会覆盖Closing方法而不是订阅事件。

protected override void OnFormClosing(FormClosingEventArgs e)
{
   if(CallMyMethod)
   {
       MyMethod(this);
   }

   base.OnFormClosing(e);
}

如果MyMethod在表单外部,您可以使用委托(也许更好的命名)

public Action<Form> MyMethod { get; set; }
protected override void OnFormClosing(FormClosingEventArgs e)
{
   if(MyMethod != null)
   {
       MyMethod(this);
   }

   base.OnFormClosing(e);
}

但实际上因为它是一个表单,如果你想调用外部方法,最好订阅Forms Closing事件。

** OP编辑**

这足以让我到达我想去的地方,它创建了一个继承自Form的部分类,并覆盖那里的事件来做我想做的事。