诸如string.Format()或.Parse()之类的某些方法需要IFormatProvider。您如何提供?

  • 在封闭环境的应用程序中(您知道永远不需要本地化),您是否跳过它并在没有IFormatProvider的情况下调用方法?
  • 在可能已本地化的应用程序中,您是否为每个方法调用都考虑了正确的值,并将其设置在正确的位置?那可能是“CultureInfo.CurrentCulture”或“CultureInfo.CurrentUiCulture”。
  • 还是使用“MyUiCultureInfo”和“MyCultureInfo”之类的全局变量通过更改其值来切换本地化?您如何以及在何处存储这些变量?
  • 在开发库或框架时,有什么要考虑的问题-在这种情况下如何处理本地化?
  • 最佳答案

    我总是在(ASP.NET)应用程序中将CurrentThread.Current(Ui)Culture设置为正确的值。通常根据用户的首选项或配置文件中存储的默认值(如果用户尚未定义首选项)在每个请求的开始时执行此操作。

    在设置了当前线程的这些属性之后,您可以停止考虑它-数字,日期等将被正确格式化/解析,即使没有为这些方法提供IFormatProvider。否则,您必须确保将正确的IFormatProvider传递到各处。

    以库为例,我认为它应该仅依赖于应用程序来处理这些事情,而不必担心这些事情。

    10-07 12:10
    查看更多