Это применимо только к методам с перегрузкой IFormatProvider
.
Для решения этой проблемы у меня есть два статических класса, InvariantText
и CulturedText
, которые работают со строками в инвариантной культуре итекущая культура соответственно.Например, у меня есть метод Format в каждом классе.Таким образом, я могу выполнять культурно-нейтральное и культурно-ориентированное форматирование без необходимости каждый раз указывать IFormatProvider
.
Пример:
InvariantText.Format("0x{0:X8}",value);
CulturedText.Format("Appending file {0}",file);
InvariantText.Format
и CulturedText.Format
просто обертки к методу String.Format
и, соответственно, возвращаемые строки.
Вы можете даже использовать этот шаблон, чтобы обернуть другие функции, которые требуют не зависящих от культуры и специфичных для культуры строк.Например, создайте два метода, InvariantLog
и CulturedLog
, которые обертывают вызовы к Logger.DebugFormat
в вашем вопросе и принимают соответствующие IFormatProvider
в каждом случае.