0

我们希望像往常一样实现自定义格式化程序,最好使用 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;

但这看起来就像糟糕的设计(采用一个接口,然后强耦合它)。

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

4

1 回答 1

1

IFormatProvider 用于为您的自定义格式化程序提供特定于文化的和全局格式化信息。当然,根据您的自定义格式化程序正在做什么,您可能不需要任何这些信息,但是如果您正在格式化货币或浮点数或日期,例如,那么您可能需要它。

于 2013-11-25T23:36:45.820 回答