我们希望按照惯例实现自定义格式化程序,最好使用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;
但这只是看起来很糟糕的设计(接受一个接口然后强烈耦合它)。
我错过了一些特殊用例吗?
答案 0 :(得分:1)
IFormatProvider用于向您的自定义格式化程序提供特定于文化的全局格式信息。当然,根据您的自定义格式化程序的作用,您可能不需要任何此类信息,但是,例如,如果您要格式化货币或浮点数或日期,那么您可能会想要它。