GetGlobalResourceObject 或 Resources.Resource - 哪个更好?

Posted

技术标签:

【中文标题】GetGlobalResourceObject 或 Resources.Resource - 哪个更好?【英文标题】:GetGlobalResourceObject or Resources.Resource - what's better? 【发布时间】:2009-12-10 18:42:17 【问题描述】:

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

在代码后面什么更好?

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

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

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

【问题讨论】:

【参考方案1】:

这些是每种方法的优点:

GetGlobalResourceObject(和GetLocalResourceObject)的优势:

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

强类型RESX类型的优点:

    如果您访问不存在的资源,则会出现编译时错误。 您在进行项目时会获得 Intellisense。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于GetGlobalResourceObject 或 Resources.Resource - 哪个更好?的主要内容,如果未能解决你的问题,请参考以下文章

使用 GetGlobalResourceObject 的资源信息值为空

c#WinForm如何从代码后面的资源文件中检索值

PHP MySql MsSql 如何插入或更新 ['] 或 ["] 或 [`] 字符?

与、或、异或运算

jQuery 或原始 JavaScript 是不是预编译或缓存变量表达式或选择器?

QGraphicsView 或 QWidget 完成绘制或渲染时是不是存在信号或事件?