如何声明一次lambda属性以供重新使用?

时间:2019-04-07 07:17:10

标签: c# lambda signalr

我的启动类中有此代码...

 if (env.IsDevelopment())
            {
                app.UseSignalR(routes => { routes.MapHub<RouteUpdate>("/routeupdate"); });
            }
            else
            {
                app.UseAzureSignalR(routes => { routes.MapHub<RouteUpdate>("/routeupdate"); });
            }

我也尝试过这样做。

        var routesCollection = new ServiceRouteBuilder(routes =>
       {
            routes.MapHub<RouteUpdate>(nameof(RouteUpdate));
       });

哪些不起作用...

如何重用相同的集合并引用一次?我已经用谷歌搜索了“ lambda变量重用”及其等效词,但看不到前进的方向。

2 个答案:

答案 0 :(得分:2)

如果选中documentation,则可以看到参数类型为Action<HubRouteBuilder>。这是您需要构建以便能够重新使用它的东西。

Action<HubRouteBuilder> routeAction = routes => { routes.MapHub<RouteUpdate>("/routeupdate"); };

if (env.IsDevelopment())
{
    app.UseSignalR(routeAction);
}
else
{
    app.UseAzureSignalR(routeAction);
}

答案 1 :(得分:0)

由于您需要提供Action<HubRouteBuilder>(这是一种委托类型,基本上描述了“采用HubRouteBuilder并返回void的方法”),因此可以定义方法或局部函数并对其进行引用以后:

void configureRoute(HubRouteBuilder routes) 
    => routes.MapHub<RouteUpdate>("/routeupdate");

if (env.IsDevelopment())
    app.UseSignalR(configureRoute);
else
    app.UseAzureSignalR(configureRoute);