2011-12-28 3 views
0

Я ищу способ переопределить метод decimal.ToString ("c"). Я написал свой поставщик пользовательских форматов, и он работает, когда я делаю что-то вроде decimal.ToString (myprovider), но есть ли способ переопределить поставщика по умолчанию для маршрутизации decimal.ToString («c») вызывает через моего настраиваемого поставщика? Обратите внимание, что это не касается функции NumberFormat, и я знаю, что могу ее переопределить. Это о фактическом форматировании, который использует информацию о номере и подключает его к выходу. Конечная цель - сделать некоторый расчет по значениям во время форматирования.переопределяющий поставщик форматов по умолчанию для культуры

Благодаря

ответ

1

Одним из способов достижения этой цели было написать свой собственный провайдер, а затем изменить поставщик формата номер для текущего потока. Это направит все decimal.ToString("c") на ваш пользовательский провайдер и формат в соответствии с вашими кодами.

0

Я могу предложить вам, используя свой собственный провайдер формата что-то вроде этого, он должен решить вашу проблему

class CustomFormatter : IFormatProvider, ICustomFormatter{} 

string.Format(new CustomFormatter(), "{0}", yourDecimalValue) 

если вы хотите, чтобы указать некоторые дополнительные параметры, которые вы можете передать их в CustomFormatter CTOR , Попробуйте сыграть с этим кодом, и я думаю, вы найдете именно то, что хотите.

Спасибо, Kiryl

+0

Я использовал пользовательский провайдер и да, как вы говорите, что он работает. Проблема заключалась в том, что я пытался сохранить некоторые старые коды, которые используют вызовы ToString, поэтому это было неприемлемым решением. – Leadfoot

Смежные вопросы