我有一个类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
}
}