@embiid

Как решить проблему string.Format?

private const string GetAQuoteLink = "/{0}/get-a-quote?locationid={1}&locationname={2}";
        public async Task<string?> ResolveGetAQuoteLink(string culture, int? centreId,
            CancellationToken cancellationToken)
        {
            var centre = await GetLocationById(culture, centreId, cancellationToken).ConfigureAwait(false);
            if (centre != null && !string.IsNullOrEmpty(centre.Name))
            {
                var location = centre.Name;

                if (centre.Id != 0)
                {
                    location = centre.Name + "-" + centre.Id;
                }

                return string.Format(GetAQuoteLink, culture, centre?.Id, location);
            }

            return string.Format(GetAQuoteLink, culture);
        }


Там где у меня строка centre, возврашается в моей случае null. И в string.Format падает - но как это решается не знаю
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@Voland69
Если вызываемая сторону и вас устраивают пустые параметры в урле, то попробуйте так
string.Format(GetAQuoteLink, culture, centre?.Id ?? string.Empty, location)

А если при пустом centre надо именно скипнуть параметр, то я бы переписал следующим образом:
  1. собираем все параметры в словарик string, string
  2. делаем Select() в строку вида "key=value"
  3. делаем string.Join() с правильным разделителем (&)
  4. если строка не пуста, то через ? конкатенируем с урлом

P.S. есть смысл для такого рассмотреть библиотеку готовую, в Asp.Net Core например QueryString из коробки умеет то что нужно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы