переопределяющий формат по умолчанию поставщик культуры - PullRequest
0 голосов
/ 28 декабря 2011

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

Спасибо

Ответы [ 2 ]

1 голос
/ 04 марта 2012

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

0 голосов
/ 28 декабря 2011

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

class CustomFormatter : IFormatProvider, ICustomFormatter{}

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

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

Спасибо, Kiryl

...