如何向以下回调添加额外参数:
objXmpp.OnLogin += new ObjectHandler(objXmppArun_OnLogin);
private void objXmppArun_OnLogin(object sender)
{
}
是否可以向 objXmppArun_OnLogin
事件处理程序发送一个额外的参数?
最佳答案
不,这不可能。 C# 中的事件(和一般的委托(delegate))定义了具有固定参数的特定方法签名,因此您不能添加额外的参数。
最好的办法是创建一个单独的方法,您的事件处理程序可以调用该方法并将额外参数传递给:
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
}
或者,如果您需要的值仅在附加处理程序时才知道,您可以将其包装在匿名方法中:
private void AttachHandlers()
{
string parameter = "Some Info";
objXmpp.OnLogin += new ObjectHandler(sender => {
objXmppArun_OnLogin(sender, parameter);
});
}
private void objXmppArun_OnLogin(object sender, string extraParameter)
{
}
关于c# - 将额外参数传递给 C# 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960098/