我怎么知道哪个方法称为事件处理程序

时间:2010-10-07 13:28:34

标签: c#

我有两种方法:

private void RvListen_OPT()

private void RvListen_FUT()

在某个事件中,两个人都打电话:

void OnRvMessageReceived(object sender, SigRvMessageEventArgs args)

调用OnRvMessageReceived时,如何检查两种方法中的哪一种称为它?我知道可以使用对象发送方完成,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:3)

如果你可以编辑SigRvMessageEventArgs类,你可以为它添加一个字段,你在两次调用中设置不同。

答案 1 :(得分:1)

发件人将(通常)为您提供调用该事件的对象。它可能不是因为它由调用者来实际设置它。

那就是说,我不确定它是否重要。如果调用取决于谁调用它,可能需要将它们设置为单独的事件......或者,正如Jackson所提到的,args变量可以设置为允许OnRvMessageReceived事件可以响应该事件。

答案 2 :(得分:1)

如果您无法更改sender以获取其他属性,请将SigRvMessageEventArgs设置为字符串...但最好的方法是在可能的情况下修改SigRvMessageEventArgs。

private void RvListen_OPT()
{
   OnRvMessageReceived("RvListn_OPT()", new SigRvMessageEventArgs())
}

private void RvListen_FUT()
{
   OnRvMessageReceived("RvListn_FUT()", new SigRvMessageEventArgs())
}

void OnRvMessageReceived(object sender, SigRvMessageEventArgs args)
{
   if(sender.ToString() == "RvListn_OPT()"){
      // do work
   }
   else if(sender.ToString() == "RvListn_FUT()"){
      // do work
   }
}