当使用单个参数调用时,带有可选参数的方法委托不起作用

乌斯曼·汗(Usman Khan)

我有一个方法需要:

public delegate void SubscriberAction(string a, string b = null);

我的方法

public void Subscribe(SubscriberAction action)
{
    var consumer = new EventingBasicConsumer(Channel);
    consumer.Received += (model, eventArgs) =>
    {
        try
        {
            var body = eventArgs.Body;
            action?.Invoke(Encoding.UTF8.GetString(body), eventArgs.RoutingKey); 
            // The above works when I call it with one or two strings
        }
        finally
        {
            Channel.BasicAck(eventArgs.DeliveryTag, false);
        }
    };
    Channel.BasicConsume(Configuration.QueueName, false, consumer);
}

如上所示,当我调用此动作时,它会识别可选参数,并且可以按预期调用它。但是,Subscribe采用此委托参数方法不会让我按自己的意愿来称呼它。

所以这行不通:

subscriber.Subscribe(x =>
{
    // do stuff
});

仅在我这样做时有效

subscriber.Subscribe((x, y) =>
{
    // do stuff
});

最初,我Action<string> action用作参数,Subscribe但需要添加一个可选的第二个字符串参数,并且由于Action不允许使用可选参数(如果我输入错了,请更正我),我找到了一个答案,要求使用自定义委托,如上所述。

如何Subscribe使用一个或两个参数调用该方法?

栎属

返回Action<String, String>并添加另一个Subscribe方法:

public void Subscribe(Action<string> action) => Subscribe((x, y) => action(x));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

参数不起作用的HttpURLConnection GET调用

带有单个字符串参数的WebApi 2 POST不起作用

外层对带有多个参数的函数不起作用?

使用带有参数的SQL IN运算符的SQL Server Report Builder 3不起作用

具有许多可选参数的过滤器不起作用

Typescript重载可选参数不起作用?

与非隐式参数结合使用时,为什么隐式参数不起作用

当命令行参数带有变量时,Powershell命令调用不起作用

带有参数传递的jQuery函数不起作用

带有args.parse参数形式列表的Python命令行参数不起作用

为什么将我的委托作为参数传递给方法时不起作用?

调用带有参数的方法

带有参数的RedirectToAction不起作用

使用PyObject_CallMethod调用带有可选参数的函数

Laravel多个可选参数不起作用

参数不起作用的AJAX调用

在带有参数的AND / OR运算符中使用MATCH在SQLite中不起作用

使用参数调用委托方法名称

带有参数的laravel 5.3操作不起作用

React Router-带有可选参数的路由不起作用

Laravel 多个可选参数不起作用,URL 中有两个反斜杠

带有参数名 fromName 的 viewParam 不起作用

Java 8 中带有可选参数的调用方法

如何使用in参数直接调用带有ref参数的方法

使用单个字符串参数调用 HttpPost 不起作用

TypeScript 可选参数不起作用

当带有参数的发布请求开始起作用时,无法使用 urllib 从网站下载 csv 文件

c# - 如何使用反射调用带有可选参数的方法

Express JS - 可选参数不起作用