我有指定自定义格式,基本上是这样的:的String.Format()调用没有自定义格式
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
我有遗漏吗?
什么'PARAMETER_的价值' - 你最终会得到一个格式字符串,它实际上有任何参数(如'{0}')吗?这是否意味着'!Equals',意味着如果你的格式化程序没有处理这个值,那么这意味着提前退出? – shambulator 2013-02-20 20:49:42
对不起,是一个错字。问题在于,'!Equals'这一行永远不会被忽略。 'string.Format()'不会调用格式化程序。 – code4life 2013-02-20 20:52:56
在您的来电'string.Format',什么是第二个参数(您的格式字符串)的值?如果没有格式化占位符,我不希望格式化程序被调用。空字符串的默认值看起来不太有希望。 – shambulator 2013-02-20 20:54:00