将额外的参数传递给C#回调 [英] Pass extra parameter to C# callback

查看:65
本文介绍了将额外的参数传递给C#回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在以下回调中添加额外的参数:

How to add extra parameters to the following callback :

objXmpp.OnLogin += new ObjectHandler(objXmppArun_OnLogin);

private void objXmppArun_OnLogin(object sender)
{

}

是否可以向 objXmppArun_OnLogin 事件处理程序发送一个额外的参数?

Is it possible to send one extra parameter to the objXmppArun_OnLogin event handler?

推荐答案

否,这是不可能的.C#中的事件(通常是委托)定义了具有固定参数的特定方法签名,因此您不能添加其他参数.

No, it's not possible. Events (and delegates in general) in C# define a specific method signature with fixed parameters, so you cannot add extra ones.

最好的做法是创建一个单独的方法,事件处理程序可以调用该方法并将额外的参数传递给:

The best thing to do is create a separate method which your event handler can call and pass the extra parameter to:

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
}

或者如果仅在附加处理程序时才知道所需的值,则可以将其包装为匿名方法:

Or if the value you need is only known when you attach the handler, you can wrap it up in an anonymous method:

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#回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆