一串Format()未调用自定义格式化程序
本文关键字:自定义 格式化 程序 调用 Format 一串 | 更新日期: 2023-09-27 18:00:22
我指定了一个自定义格式化程序,基本上如下所示:
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},则格式化程序不会中断
这将中断
var result = string.Format(_myFormatter, "{0}", value_);
这不会是
var result = string.Format(_myFormatter, "", value_);
当您调用String时。Format(IFormatProvider提供程序,字符串格式,paramsObject[]参数)第二个参数格式必须指定为有效的格式字符串,即不能为空。
请尝试将parameter_设置为类似于"{0}"的值,这样就可以工作了。