创建了自己的数字类型(实际上是DoubleDouble
)后,我想实现IFormattable
接口(interface)。因此,我必须以某种方式解析格式字符串。
public string ToString(string format, IFormatProvider formatProvider) {
// formatting string according to format and using formatprovider?
return formattedString;
}
该类的用户应该可以使用它代替
double
(或任何其他数字格式)。String.Format("{0:0.##}", (DoubleDouble)123.4567);
我的问题是,是否有人知道有关此的很好的教程,或者可以给我一些提示?
在此过程中如何支持本地化?
如何解析格式字符串?是否有一些方法可以帮助完成此任务,或者我必须借助regexp之类的“手”来完成所有这些工作?
我确实在寻找帮助,但找不到任何帮助,如果您发现另一种可能会有所帮助的语言(C,C++),请告诉我。
最佳答案
MSDN具有Temperature
类的nice example,该类以自己的自定义格式实现IFormattable
接口(interface)。
我想你已经知道了;无论如何,今天我了解到,如果您的DoubleDouble
类实现了IFormattable
接口(interface),则:
String.Format("{0:0.##}", (DoubleDouble)123.4567);
...将使用特定格式
DoubleDouble
作为第一个参数调用ToString(...)
类的"0.##"
实现,我怀疑这与您想要的很接近。不过,您仍然必须解析格式的那部分。我可能会猜测很多格式解析都嵌入在高度优化的.Net库二进制文件中,因此您不会得到任何自定义的解析虚拟方法来提供帮助。