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 的资源信息值为空
PHP MySql MsSql 如何插入或更新 ['] 或 ["] 或 [`] 字符?