2011-03-24 86 views
2

我有一些课程无法对使用的文化做出假设。这些类应始终使用CultureInfo.InvariantCulture。但是,我无法将线程的当前文化设置为CultureInfo.InvariantCulture,因为其他类依赖于<globalization culture="auto"有没有办法确保不使用隐式文化设置?

有没有办法确保一些类总是使用显式培养方法调用(如:Convert.ToDecimal(value, CultureInfo.InvariantCulture))而不是假定的文化(如:Convert.ToDecimal(value))。

也许我的问题它不是100%清楚:我想检测所有使用CultureInfo的重载的方法,但也有一个没有使用CurrentCulture的CultureInfo的方法。

这包括数字隐式转换为字符串:

decimal value = 1.0; 
string displayThis = string.Format("Costs: {0}", value); 

我们的目标是确保一些类/方法不承担有关的CultureInfo什么。

据说我应该用FxCop来解决这个问题。有关于此的任何提示?

+1

也许你可以创建自定义的FxCop规则。 – CodesInChaos 2011-03-24 12:40:42

+0

Convert.ToDecimal不是问题。使用一些CultureInfo-class的所有其他方法(间接)都是问题。而FxCop或CodeAnalysis可能是解决方案... – doekman 2011-03-24 13:15:28

回答

1

不,但您可以轻松地推出自己的ConertInvariant.ToDecimal(...)包装纸。

+0

Convert.ToDecimal不是问题 – doekman 2011-03-24 13:28:38

+0

@doek,随意用另一个例子替换它。但我认为ToDecimal也取决于默认配置项。 – 2011-03-24 13:30:30

1

可以使用Convert.ToDecimal Method (Object, IFormatProvider)并通过您的特定的文化提供商

相关问题