1

基本的に次のように、カスタムフォーマッタを指定しています。

public class NotationNumericFormatter : IFormatProvider, ICustomFormatter
{
    public object GetFormat(Type formatType_)
    {
      return (formatType_ == typeof(ICustomFormatter) ? this : null;
    }

    public string Format(string format_, object arg_, IFormatProvider formatProvider_)
    {
       if (!Equals(formatProvider_) || arg_ == null)  // <-- I put a breakpoint here...
       {
         return;
       }

       // then a bunch of stuff happens here.
    }
}

現時点で私を困惑させているのは、次のコードです。

// _myFormatter is a NotationNumericFormatter which gets instanced 
// in the ctor of the class in question.
var result = string.Format(_myFormatter, (parameter_ ?? "").ToString(), value_);

私のフォーマッタのFormat()メソッドの最初の行にヒットすることは決してありません。ここで何が欠けていますか?string.Format私が見逃している微妙な点はありますか?

4

2 に答える 2

1

String.Format(IFormatProvider provider , String format , params Object[] args ) を呼び出す場合、2 番目のパラメーター format は有効な書式文字列として指定する必要があります。つまり、空にすることはできません。

parameter_ を "{0}" などに設定してみてください。

于 2013-02-20T21:13:32.503 に答える