2009-12-10 84 views
4

我有一個多語言的應用程序。我爲此使用了開箱即用的.Net功能。每種語言在App_GlobalResources中都有自己的文件(請參閱下面的圖片)GetGlobalResourceObject或Resources.Resource - 有什麼更好的?

在後面的代碼中有哪些更好?

  1. GetGlobalResourceObject( 「LocalizedText」, 「ErrorOccured」)
  2. Resources.LocalizedText.ErrorOccured

第二屆一個使用較少的代碼,它的類型安全的,它會在編譯時返回一個錯誤,不跑時間。

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

回答

8

這些是每一種方法的優勢:GetGlobalResourceObject(和GetLocalResourceObject

優點:

  1. 您可以指定,而不是使用的CurrentCulture一種特定的文化。
  2. 您可以使用遲後表達式(即字符串)來決定加載哪個資源。如果您不能提前知道需要加載的資源,這很有用。
  3. 它適用於任何資源提供者類型。例如,它不僅適用於內置默認的基於RESX的提供程序,而且它對基於數據庫的提供程序也是如此。

優勢強類型RESX類型:

  1. 你得到,如果你訪問一個不存在的資源編譯時錯誤。
  2. 在項目上工作時,您會收到Intellisense。

因此,與許多「哪個是最好的」問題一樣,答案是:這取決於!選擇最有利於您特定場景的優勢。

2

因此,使用第二個,如果你知道的前期資源文件和重點是什麼。

如果您不知道資源文件或(更有可能的話)密鑰在編譯時會是什麼,那麼GetGlobalResourceObject()方法很有用。

相關問題