c# - 将额外参数传递给 C# 回调

标签 c# asp.net

如何向以下回调添加额外参数:

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/

相关文章:

Asp.Net:将值从 Page 传递到 UserControl

asp.net - 返回时,ASP .NET Core Cookie 身份验证过期从时间戳更改为 "Session"

c# - 如何在单击按钮时查找动态创建的表

c# - Windows 10 UWP 开发中是否有 Windows 8.1 SettingsFlyout 的替代方案?

c# - 如何在 C# 中将二维数组转换为二维列表

c# - gRPC 保持响应流对订阅开放

c# - Asp.net mvc 5 改变mvc应用文化

asp.net - SignalR 长轮询传输

c# - 如何将数据从 List<List<String>> 添加到 ListView

c# - Firefox 没有 Access-Control-Allow-Origin,但适用于 Chrome 和 Safari