Здравствуйте, хочу разобраться с IFormatable и IFormatProvider
ToString у IFormatable принимает два параметра. Первый нужен, что бы понимать как форматировать, а второй тоже самое только более подробное и конкретное описание. Вопрос вот какой, зачем тогда первый, если второй уже все содержит? Они вообще могут друг другу противоречить. К примеру я первым параметром указал, что у цифр в качестве разделителя должна быть точка, а второй параметр(моя культура) утверждает, что должна быть запятая.IFormatProvider у него есть метод object GetFormat(Type formatType). Вопрос, вот почему он возвращает object? Да это же можно, что угодно вернуть, почему его не сделали хотя бы обобщенным? К примеру ToString у double пытается IFormatProvider привести к CultureInfo или NumberFormatInfo (тогда да, он понимает к чему можно привести результат GetFormat). Да с чего он взял что я вообще передам ему какой из этих типов (CultureInfo или NumberFormatInfo)?1) Как сказано в документации, форматная строка обычно управляет общим видом результата, в то время как провайдер формата определяет конкретные символы, используемые для этого общего вида.
Обычно в качестве провайдера формата выступает язык. Например, если вы хотите полный формат даты на немецком языке, то вы указываете в форматной строке, что вам нужна именно длинная дата, а провайдером формата выбираете CultureInfo.GetCultureInfo("de-DE").
Если бы разделения не было, вам пришлось бы передавать ещё и язык в форматной строке, и она стала бы малообозримой. Кроме того, довольно часто вы хотите локализацию вашего приложения, то есть вы хотите оставить одинаковую форматную строку (смысл вашего форматирования), и менять в зависимости от предпочтений юзера провайдер (конкретный язык, из которого берутся правила). Так что такое разделение на части имеет практический смысл.
почему он возвращает object?
Потому что он был добавлен в .NET Framework 1.1, когда ещё не было обобщений
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости