4

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

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

  1. GetGlobalResourceObject("LocalizedText", "ErrorOccured")
  2. Resources.LocalizedText.ErrorOccured

第二个使用更少的代码并且它是类型安全的,它会在编译时而不是运行时返回错误。

替代文字 http://img340.imageshack.us/img340/5562/langl.gif

4

2 回答 2

8

这些是每种方法的优点:

GetGlobalResourceObject(和GetLocalResourceObject)的优点:

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

强类型 RESX 类型的优点:

  1. 如果您访问不存在的资源,则会出现编译时错误。
  2. 您在项目工作时获得 Intellisense。

因此,与许多“哪个是最好的”问题一样,答案是:视情况而定!选择最有利于您的特定场景的优势。

于 2009-12-31T21:53:00.847 回答
2

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

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

于 2009-12-31T21:40:15.570 回答