gpt4 book ai didi

.net - 我应该总是指定使用哪个 IFormatProvider 吗?

转载 作者:行者123 更新时间:2023-12-04 23:07:50 27 4
gpt4 key购买 nike

我尝试在我们产品的几个程序集上运行 FxCop,我得到了很多“指定 IFormatProvider”规则的匹配项。

碰巧,其中一些是合法的,但它也匹配这样的代码:

Logger.DebugFormat("Appending file {0}", fileName);

可以写成
Logger.DebugFormat(CultureInfo.InvariantCulture, "Appending file {0}", fileName);

第二种变体更难阅读。

那么,实际上是否建议始终指定 IFormatProvider还是“只是”规则中使用的启发式的限制?

最佳答案

它仅适用于带有 IFormatProvider 的方法重载。

为了解决这个问题,我有两个静态类,InvariantTextCulturedText ,分别适用于固定区域性和当前区域性中的字符串。例如,我在每个类中都有一个 Format 方法。通过这种方式,我可以进行文化中立和文化感知的格式化,而无需指定 IFormatProvider每一次。

例子:

InvariantText.Format("0x{0:X8}",value);

CulturedText.Format("Appending file {0}",file);
InvariantText.FormatCulturedText.Format只是 String.Format 的包装器方法,因此同样返回字符串。

您甚至可以使用此模式来包装需要文化中性和特定于文化的字符串的其他函数。比如创建两个方法, InvariantLogCulturedLog包装对 Logger.DebugFormat 的调用在您的问题中选择合适的 IFormatProvider在每种情况下。

关于.net - 我应该总是指定使用哪个 IFormatProvider 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6980309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com