У меня есть следующие две строки кода:
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() с пользовательским средством форматирования?
Спасибо!