Flurl (Fluent Url) настраиваемая сериализация
Как переопределить поведение Flurl по умолчанию при сериализации объектов для запроса строковых значений? Например, код ниже
DateTime date = new DateTime(2017, 1, 2, 3, 4, 5);
Url url = "http://domain.com".SetQueryParam("date", date);
производит следующий URL:
http://domain.com?date=01%2F02%2F2017%2003%3A04%3A05
Что я хочу это:
http://domain.com?date=2017-01-02T03%3A04%3A05.0000000
что будет результатом сериализации даты следующим образом:
date.ToString("O")
1 ответ
Flurl заботится о кодировании URL, но в действительности это не касается пользовательского форматирования строк. Я думаю, самый очевидный способ сделать то, что вы хотите, это:
"http://domain.com".SetQueryParam("date", date.ToString("O"));
Если вы много делаете это и хотите не указывать бит форматирования каждый раз, вы можете добавить свои собственные методы расширения (один для Url
и один для string
согласно шаблону):
public static Url SetDateParam(this Url url, string name, DateTime date)
{
return url.SetQueryParam(name, date.ToString("O"));
}
public static Url SetDateParam(this string url, string name, DateTime date)
{
return new Url(url).SetDateParam(name, date);
}
Тогда у вас есть:
"http://domain.com".SetDateParam("date", date);