我指定了一个自定义格式化程序,基本上是这样的:
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
是否有些微妙之处?
答案 0 :(得分:1)
当您调用String.Format(IFormatProvider提供程序,String格式,params Object [] args)时,第二个参数格式指定为有效格式字符串,即它不能为空。
尝试将parameter_设置为“{0}”,然后它应该可以正常工作。
答案 1 :(得分:1)
如果参数没有{0},则格式化程序不会断点
这将是断点
var result = string.Format(_myFormatter, "{0}", value_);
这不会
var result = string.Format(_myFormatter, "", value_);