在.NET中,是否可以根据函数调用来设置事件

时间:2011-03-30 08:44:56

标签: c# .net events function call

说我有一个名为的函数:

void AFun()
{
// body
}

无论何时调用此函数,都可以设置事件。说,

void AnEvent()
{
//body
}

只要调用AnEvent(),就会始终调用AFun()

4 个答案:

答案 0 :(得分:4)

是的,但间接地,如果您在AFun中发出一个事件,并且AnEvent会听取该事件,您将实现您想要的效果。否则,您所描述的内容不受直接支持

代码示例:

public delegate void EventHandler();
public event EventHandler ev;

public void AFun
{
   ...do stuff
   ev(); //emit
}

//somewhere in the ctor
ev += MyEventHandler;

//finally 

void MyEventHandler
{
    //handle the event
}

答案 1 :(得分:1)

简单方法:

event EventHandler AnEventHappened;

void AFun()
{
   OnAnEvent();
}

void AnEvent()
{

}

void OnAnEvent()
{
  var tmp = AnEventHappened;
  if(tmp != null) tmp(this, EventArgs.Empty);
}

答案 2 :(得分:1)

不像你写的那样。您所描述的内容称为“面向方面编程”(AOP),需要编译器支持。

现在,C#和.NET有一些扩展通过将侦听器和事件注入代码中的正确位置来执行AOP。

偏离主题:在JavaScript中,您可以执行此操作。

答案 3 :(得分:0)

艰难的方式:

使用面向方面编程(使用Castle或PostSharp之类的东西)并以这种方式发出事件。