如何声明 lambda 属性 一次以供重复使用?
How can I declare a lambda property once for re-use?
我的启动程序中有此代码class...
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 variable re-use" 和等效项,但我看不到前进的方向。
如果您检查 documentation,您可以看到参数类型是 Action<HubRouteBuilder>
。这是您需要构建的,以便能够重新使用它。
Action<HubRouteBuilder> routeAction = routes => { routes.MapHub<RouteUpdate>("/routeupdate"); };
if (env.IsDevelopment())
{
app.UseSignalR(routeAction);
}
else
{
app.UseAzureSignalR(routeAction);
}
由于您需要提供一个 Action<HubRouteBuilder>
(这是一个基本上描述 "method that takes a HubRouteBuilder
and returns void" 的委托类型),您可以定义一个方法或局部函数并在以后引用它:
void configureRoute(HubRouteBuilder routes)
=> routes.MapHub<RouteUpdate>("/routeupdate");
if (env.IsDevelopment())
app.UseSignalR(configureRoute);
else
app.UseAzureSignalR(configureRoute);
我的启动程序中有此代码class...
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 variable re-use" 和等效项,但我看不到前进的方向。
如果您检查 documentation,您可以看到参数类型是 Action<HubRouteBuilder>
。这是您需要构建的,以便能够重新使用它。
Action<HubRouteBuilder> routeAction = routes => { routes.MapHub<RouteUpdate>("/routeupdate"); };
if (env.IsDevelopment())
{
app.UseSignalR(routeAction);
}
else
{
app.UseAzureSignalR(routeAction);
}
由于您需要提供一个 Action<HubRouteBuilder>
(这是一个基本上描述 "method that takes a HubRouteBuilder
and returns void" 的委托类型),您可以定义一个方法或局部函数并在以后引用它:
void configureRoute(HubRouteBuilder routes)
=> routes.MapHub<RouteUpdate>("/routeupdate");
if (env.IsDevelopment())
app.UseSignalR(configureRoute);
else
app.UseAzureSignalR(configureRoute);