我的启动类中有此代码...
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变量重用”及其等效词,但看不到前进的方向。
答案 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);