IFormatProvider在ICustomFormatter中

时间:2013-11-25 23:31:05

标签: c# .net iformatprovider

我们希望按照惯例实现自定义格式化程序,最好使用Microsoft的接口,所以我找到了ICustomFormatter。

http://msdn.microsoft.com/en-us/library/system.icustomformatter.format(v=vs.110).aspx

然而,界面的签名提供了这个:

public string Format(string format, object arg, IFormatProvider formatProvider)
{

}

我甚至会使用formatProvider?我还没有看到好的示例,说明为什么你关心formatProvider加载了这个ICustomFormatter的原因。

我发现的唯一例子是这样的:

http://www.codeproject.com/Articles/6533/Custom-String-Formatting-in-NET

if (formatProvider is NumberFormatInfo)
    if (((NumberFormatInfo)formatProvider).UseDiacritic)
        c = diacritic;

但这只是看起来很糟糕的设计(接受一个接口然后强烈耦合它)。

我错过了一些特殊用例吗?

1 个答案:

答案 0 :(得分:1)

IFormatProvider用于向您的自定义格式化程序提供特定于文化的全局格式信息。当然,根据您的自定义格式化程序的作用,您可能不需要任何此类信息,但是,例如,如果您要格式化货币或浮点数或日期,那么您可能会想要它。