Co robi IFormatProvider ?

Bawiłeam się metodą Datetime.ParseExact, wymaga ona IFormatProvider ...

Działa wprowadzanie wartości null, ale co dokładnie robi?

1 odpowiedź

Interfejs IFormatProvider jest zwykle dla Ciebie implementowany przez klasę CultureInfo, np .:

  • CultureInfo.CurrentCulture
  • CultureInfo.CurrentUICulture
  • CultureInfo.InvariantCulture
  • CultureInfo.CreateSpecificCulture („de-CA”)

Interfejs jest bramą dla funkcji umożliwiającej uzyskanie zestawu danych specyficznych dla kultury z kultury. Dwa powszechnie dostępne obiekty kultury, o które można zapytać IFormatProvider, to:

-DateTimeFormatInfo -NumberFormatInfo Normalnie działałoby to w ten sposób, że poprosisz IFormatProvider o podanie obiektu DateTimeFormatInfo:

DateTimeFormatInfo format;
format = (DateTimeFormatInfo)provider.GetFormat(typeof(DateTimeFormatInfo));
if (format != null)
   XYZ(format);

każdy interfejs IFormatProvider jest prawdopodobnie implementowany przez klasę, która pochodzi z CultureInfo lub z DateTimeFormatInfo, więc można rzutować interfejs bezpośrednio:

CultureInfo info = provider as CultureInfo;
if (info != null)
   format = info.DateTimeInfo;
else
{
   DateTimeFormatInfo dtfi = provider as DateTimeFormatInfo;
   if (dtfi != null)
       format = dtfi;
   else
       format = (DateTimeFormatInfo)provider.GetFormat(typeof(DateTimeFormatInfo));
}

if (format != null)
   DoStuffWithDatesOrTimes(format);

Aby uzyskać DateTimeFormatInfo od IFormatProvider:

DateTimeFormatInfo format = DateTimeFormatInfo.GetInstance(provider);

Aby uzyskać NumberFormatInfo od IFormatProvider:

NumberFormatInfo format = NumberFormatInfo.GetInstance(provider);

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.