覆盖文化的默认格式提供者

时间:2011-12-28 12:36:00

标签: c# asp.net .net globalization cultureinfo

我正在寻找一种覆盖默认decimal.ToString(“c”)方法调用的方法。我编写了我的自定义格式提供程序,当我执行decimal.ToString(myprovider)之类的操作时它有效但有没有办法覆盖默认提供程序以通过我的自定义提供程序路由decimal.ToString(“c”)调用?请注意,它不是关于NumberFormat它的工作,我知道我可以覆盖它。它是关于使用数字格式信息并将其插入输出的实际格式化程序。最终目标是在格式化时对值进行一些计算。

由于

2 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是编写自定义提供程序,然后更改当前线程的数字格式提供程序。这会将所有decimal.ToString("c")路由到您的自定义提供商,并根据您的代码进行格式化。

答案 1 :(得分:0)

我可以建议您使用这样的自定义格式提供程序,它应该可以解决您的问题

class CustomFormatter : IFormatProvider, ICustomFormatter{}

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

如果要指定一些其他参数,可以将它们传递给CustomFormatter ctor。 尝试使用此代码,我猜您会找到您想要的内容。

谢谢, Kiryl