GetGlobalResourceObject或Resources.Resource - 什么更好?

时间:2009-12-10 18:42:18

标签: asp.net globalization culture cultureinfo

我有一个多语言的应用程序。我正在使用开箱即用的.Net功能。每种语言在App_GlobalResources中都有自己的文件(参见下面的iamge)

在代码背后有什么更好的?

  1. GetGlobalResourceObject(“LocalizedText”,“ErrorOccured”)
  2. Resources.LocalizedText.ErrorOccured
  3. 第二个使用较少的代码并且它的类型安全,它将在编译期间返回错误而不是运行时间。

    alt text http://img340.imageshack.us/img340/5562/langl.gif

2 个答案:

答案 0 :(得分:8)

这些是每种方法的优点:

GetGlobalResourceObject(和GetLocalResourceObject)的优点:

  1. 您可以指定特定的文化,而不是使用CurrentCulture。
  2. 您可以使用后期绑定表达式(即字符串)来决定要加载哪个资源。如果您无法提前知道需要加载哪个资源,这将非常有用。
  3. 适用于任何资源提供程序类型。例如,它不仅适用于内置的基于RESX的默认提供程序,而且对基于数据库的提供程序也有效。
  4. 强类型RESX类型的优点:

    1. 如果访问不存在的资源,则会出现编译时错误。
    2. 在处理项目时,您可以获得智能感知。
    3. 因此,与许多“哪个是最好的”问题一样,答案是:这取决于!选择一个有利于您的特定情况的优势的那个。

答案 1 :(得分:2)

因此,如果您事先知道资源文件和密钥是什么,请使用第二个。

如果在编译时不知道资源文件或(更有可能)密钥是什么,GetGlobalResourceObject()方法很有用。