2017-02-13 1 views
0

개체를 쿼리 문자열 값으로 직렬화 할 때 Flurl의 기본 동작을 재정의하려면 어떻게합니까? 예 :Flurl (Fluent Url) 사용자 지정 serialization

http://domain.com?date=01%2F02%2F2017%2003%3A04%3A05 

내가 원하는 것은 이것이다 : 아래 코드

DateTime date = new DateTime(2017, 1, 2, 3, 4, 5); 
Url url = "http://domain.com".SetQueryParam("date", date); 

는 다음 URL을 생성 다음과 같이 날짜를 직렬화의 결과 일 것이다

http://domain.com?date=2017-01-02T03%3A04%3A05.0000000 

:

date.ToString("O") 

답변

0

Flurl은 f URL 인코딩은 그렇지만 사용자 지정 문자열 서식 지정과 관련이 없습니다. 당신은 많은이 일을하고 포맷 비트마다 시간을 지정 피하고 싶은 경우

"http://domain.com".SetQueryParam("date", date.ToString("O")); 

, 당신이 당신의 자신의 확장 메서드를 추가 할 수 있습니다 (한 : 나는 당신이 원하는 것은 이것이다 할 수있는 가장 확실한 방법을 생각

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); 
+0

감사 @Tod, Flurl이의를 정의하는 수치 허용하지 않습니다 년대 pattern)이 당 Urlstring 하나, 다양한 유형에 대한 초기화 규칙. 더 짜증나는 점은 날짜 직렬화가 스레드의 현재 culture를 존중하지 않으며 m/d/y로 하드 코드된다는 것입니다. 왜 정규식 y-m-d 형식을 사용하지 않았습니까? 쿼리 문자열에서 예를 들어 실행중인 서버로 날짜를 보내는 경우 오스트레일리아 지역의 환경 설정에서는 d/m/y로 해석하려고 시도하고 내 날짜의 반은 잘못 나올 것입니다. 지금은 Flurl을 사용하지 않기로 결정하고 내 자신의 쿼리 문자열 작성기를 작성했습니다. – Andrew

+1

@Andrew 여기에 몇 가지 의견을드립니다. 첫째, 지금까지 아무도 요구하지 않은 기능이 존재하지 않는다는 사실에 부끄럽지 않습니다. 당신이 여기에 불평하기 전에 GitHub에 제안을 로깅하거나 PR을 제출하는 것을 고려 했습니까? 둘째, Flurl을 사용하여 원하는 것을 수행하는 2 가지의 매우 간단하고 간단한 솔루션을 제안했습니다. 당신이 그것을 읽고 이해하고 여전히 그것을 버리고 자신의 건축업자를 쓰는 것이 최선의 선택이라고 결론을 내린다면, 나는 당신의 사고 과정을 따르지 않을까 걱정됩니다. –

+0

@@ Todd 죄송합니다. 귀하가 Flurl 작성자임을 알지 못했고 개인적으로 의견을 남길 수도 있습니다. 나는 일반적으로 구성 요소를 비판하지 않는다. 나는 이것이 훌륭하다고 생각하며,이 동작을 발견하기 전까지는 그것을 사용하기위한 모든 의도를 가지고 있었다. 당신이 제안한 해결책은 나를 위해 효과가 없을 것입니다. 당신은 당신이 "내 사고 과정을 따르지 않는다"는 것을 말하고 있지만, 당신은 나의 정확한 요구 조건을 모른다. 난 솔직히 당신이 m/d/y로 날짜 직렬화를 하드 코드하기로 결정했을 때 당신의 생각 과정을 따르지 않는다. 모호하지 않은 y-m-d를 사용하기보다는. 설명해 주시겠습니까? – Andrew

관련 문제