Сравнение String.Format и int.ToString в отношении проблемы iCustomFormatter

У меня есть следующие две строки кода:

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() с пользовательским средством форматирования?

Спасибо!

5
задан greggorob64 26 March 2012 в 14:25
поделиться