我有以下两行代码:
var BadResult = (100).ToString("B", new CustomFormatter ());
var GoodResult = String.Format("{0}", 100, new CustomFormatter ());
而 BadResult 显然是坏的,而 GoodResult 是好的。我的 CustomFormatter 类是这样声明的:(还有一个我觉得相关的函数):
public class CustomFormatter
: IFormatProvider, ICustomFormatter
{
public virtual Object GetFormat(Type formatType)
{
String formatTypeName = formatType.ToString();
formatTypeName = formatTypeName;
Object formatter = null;
if (formatType == typeof(ICustomFormatter))
formatter = this;
return formatter;
}
}
问题本身,当我以“良好的结果”运行代码行时,GetFormat 函数正在请求 CustomFormatter 的实例。
每当它用 Float.Tostring() 调用时,它都需要一个 NumberFormatInfo 的实例。
我最初跳到“我的 CustomFormatter 应该来自 NumberFormatInfo”。不幸的是,班级是封闭的。
那么: 我需要做什么才能使用自定义格式化程序调用 Float.ToString()?
谢谢!