将参数传递给事件处理程序,给出错误



我有一个类Account。在其中,我添加了一个名为Activation的操作,并将事件处理程序附加到它。

这是代码:

public class Account 
{
     public event Action Activation;
     public Account()
     {
          this.Activation += SendActivationEvent;
     }
     private void SendActivationEvent()
     {
           //do something here
     }
}

工作正常。现在我想给SendActivationEvent方法添加一个参数。我试过了:

 string sourceID = String.Empty;
 this.Activation += SendActivationEvent(sourceID);
 private void SendActivationEvent(string sourceID)
 {
     //do something here
 }

给出了SendActivationEvent(sourceID)

的错误

不能隐式地将Void类型转换为System。行动

我能做些什么来解决这个问题?

嗯,Action不接受参数。使用Action<T>(在你的情况下是Action<String>)代替:

public class Account 
{
  // Note "String"
  public event Action<String> Activation;
  public Account()
  {
     // Assign method i.e. "SendActivationEvent", 
     // not method's result SendActivationEvent(sourceID)
     this.Activation += SendActivationEvent;
  }
  private void SendActivationEvent(string sourceID)
  {
     //TODO: do something here
  }
}

相关内容

  • 没有找到相关文章

最新更新