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

2

如果参数没有 {0} 则格式化程序不会断点

这将断点

var result = string.Format(_myFormatter, "{0}", value_);

这不会

var result = string.Format(_myFormatter, "", value_);
于 2013-02-20T21:14:45.833 回答
1

当您调用 String.Format(IFormatProvider provider , String format , params Object[] args ) 时,第二个参数 format 必须指定为有效的格式字符串,即它不能为空。

尝试将 parameter_ 设置为“{0}”之类的内容,然后它应该可以工作。

于 2013-02-20T21:13:32.503 回答