Как я могу объявить лямбда-свойство один раз для повторного использования? - PullRequest
1 голос
/ 07 апреля 2019

У меня есть этот код в моем классе запуска ...

 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));
       });

Что не работает ...

Как я могу повторно использовать одну и ту же коллекцию и ссылаться на нее один раз?Я погуглил «повторное использование лямбда-переменной» и эквивалентный ему, и я не вижу пути вперед.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2019

Если вы посмотрите документацию , вы увидите тип параметра Action<HubRouteBuilder>.Это то, что вам нужно построить, чтобы иметь возможность использовать его повторно.

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

if (env.IsDevelopment())
{
    app.UseSignalR(routeAction);
}
else
{
    app.UseAzureSignalR(routeAction);
}
0 голосов
/ 07 апреля 2019

Поскольку вам необходимо предоставить Action<HubRouteBuilder> (это тип делегата, который в основном описывает «метод, который принимает HubRouteBuilder и возвращает void»), вы можете определить метод или локальную функцию и ссылаться на нее позже:

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

if (env.IsDevelopment())
    app.UseSignalR(configureRoute);
else
    app.UseAzureSignalR(configureRoute);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...