String.Format
String.Format的签名如下
public static string Format(IFormatProvider provider, string format, params object[] args)
调用方式如下
var v = String.Format(new MyFormatProvider(),"{0:A}{1:B}{2:C}",arg1,arg2,arg3)
执行过程如下
调用provider的GetFormat方法,得到实现ICustomFormatter接口的一个类的对象,这个对象的名字假设叫objFormatter。
objFormatter有一个方法,其签名是:string Format(string format, object arg, IFormatProvider formatProvider)。
该Format方法会被调用三次,其参数是
A arg1 provider
B arg2 provider
C arg3 provider
最终,A决定arg1的格式化信息,B决定arg2的格式化信息,C决定arg3的格式化信息
例子请参考:http://msdn.microsoft.com/zh-cn/library/system.iformatprovider(VS.95).aspx