2013-11-25 3 views
0

평소와 같이 Microsoft의 인터페이스를 사용하는 것이 가장 좋기 때문에 사용자 지정 포맷터를 구현하고자하므로 ICustomFormatter를 찾습니다.ICustomFormatter의 IFormatProvider

http://msdn.microsoft.com/en-us/library/system.icustomformatter.format(v=vs.110).aspx

인터페이스에 대한 서명이 제공하지만 :

public string Format(string format, object arg, IFormatProvider formatProvider) 
{ 

} 

내가도에 대한 formatProvider를 사용해야합니까? 난 아직 좋은 당신이 무슨 formatProvider이 ICustomFormatter를로드했습니다에 대한 우려의 예제를 참조하십시오.

내가 찾은 유일한 예는 다음과 같이이다 :

http://www.codeproject.com/Articles/6533/Custom-String-Formatting-in-NET

if (formatProvider is NumberFormatInfo) 
    if (((NumberFormatInfo)formatProvider).UseDiacritic) 
     c = diacritic; 

그러나 이것은 단지 (인터페이스를 가지고하고 강하게 결합) 끔찍한 디자인처럼 보인다.

몇 가지 특별한 유스 케이스가 누락 되었습니까?

+1

IFormatProvider를 사용하여 다른 지역이나 문화에서 같은 유형의 데이터에 다른 형식을 허용하지 않습니까? 예를 들어, 통화 형식은 en-us의 경우 "$"를 출력하고 en-gb의 경우 "£"을 출력합니다. – acfrancis

+1

이것 만 있으면됩니다. http://msdn.microsoft.com/en-us/library/system.iformatprovider.getformat%28v=vs.110%29.aspx –

답변

1

IFormatProvider는 사용자 지정 포매터에 문화 별 및 전역 형식 정보를 제공합니다. 물론 사용자 정의 포맷터가 수행하는 작업에 따라이 정보가 필요하지는 않지만 통화 또는 부동 소수점 숫자 나 날짜를 형식화하는 경우에는 그럴 수 있습니다.

+0

Welp는 IFormatProvider의 파생 클래스에서 찌 르아야합니다. ILSpy에서 조금 (특히 DateTime). – StrangeWill