Sim*_*ren 4 .net fxcop iformatprovider
我尝试在我们的产品的几个程序集上运行FxCop,并且我获得了许多匹配"Specify IFormatProvider"规则.
碰巧,其中一些是合法的,但它也匹配这样的代码:
Logger.DebugFormat("Appending file {0}", fileName);
Run Code Online (Sandbox Code Playgroud)
哪个可以写成
Logger.DebugFormat(CultureInfo.InvariantCulture, "Appending file {0}", fileName);
Run Code Online (Sandbox Code Playgroud)
第二种变体更难阅读.
那么,它是否真的建议始终指定IFormatProvider或者"仅仅"是规则中使用的启发式的限制?
它仅适用于具有IFormatProvider过载的方法.
为了解决这个问题,我有两个静态类,InvariantText并且CulturedText,与分别在不变的文化和当前文化,字符串的工作.例如,我在每个类中都有一个Format方法.通过这种方式,我可以进行文化中立和文化感知格式化,而无需IFormatProvider每次都指定.
例:
InvariantText.Format("0x{0:X8}",value);
CulturedText.Format("Appending file {0}",file);
Run Code Online (Sandbox Code Playgroud)
InvariantText.Format并且CulturedText.Format只是String.Format方法的包装器,因此同样返回字符串.
您甚至可以使用此模式来包装需要文化中立和特定于文化的字符串的其他函数.例如,创建两个方法,InvariantLog并在您的问题CulturedLog中包含调用,Logger.DebugFormat并IFormatProvider在每种情况下采取适当的方法.
| 归档时间: |
|
| 查看次数: |
4980 次 |
| 最近记录: |