如何向以下回调添加额外参数:
objXmpp.OnLogin += new ObjectHandler(objXmppArun_OnLogin);
private void objXmppArun_OnLogin(object sender)
{
}
Run Code Online (Sandbox Code Playgroud)
是否可以向objXmppArun_OnLogin事件处理程序发送一个额外的参数?
不,这是不可能的.C#中的事件(以及一般的委托)定义了具有固定参数的特定方法签名,因此您无法添加额外的方法签名.
最好的办法是创建一个单独的方法,您的事件处理程序可以调用该方法并将额外的参数传递给:
objXmpp.OnLogin += new ObjectHandler(objXmppArun_OnLogin);
private void objXmppArun_OnLogin(object sender)
{
LoginCheck(sender, "Some Info");
}
private void LoginCheck(object sender, string extraParameter)
{
// do your thing here
}
Run Code Online (Sandbox Code Playgroud)
或者,如果只需在附加处理程序时知道所需的值,则可以使用匿名方法将其包装起来:
private void AttachHandlers()
{
string parameter = "Some Info";
objXmpp.OnLogin += new ObjectHandler(sender => {
objXmppArun_OnLogin(sender, parameter);
});
}
private void objXmppArun_OnLogin(object sender, string extraParameter)
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |