从资源文件中以编程方式访问值

17

遇到了一种需要根据代码传递的键访问存储在资源文件中的字符串值的情况。

我该如何做?

注意:资源文件存在于我的解决方案中的 Web 项目中,我想从我的 Silverlight 应用程序中访问它。


1
这个回答解决了你的问题吗?使用变量进行资源文件查找 - outis
这个回答解决了你的问题吗?从代码中访问表单资源(resx文件)。我标记了这个问题,因为有一个更早的问题问了同样的问题。 - undefined
6个回答

27

您可以使用ResourceManager类:

ResourceManager myManager = new ResourceManager(typeof(MyResource));
string myString = myManager.GetString("StringKey");

上面的MyResource是什么? - RobertKing
这是你的资源类名称,例如StringResourcesResource1等。基本上它是你的res文件的名称。 - Zbigniew
你可能需要使用 using 或者带有命名空间的名称,例如 MyApplication.Resource.MessagesResources - Zbigniew
我的资源文件存在于我的解决方案中的 Web 项目中,我想从同一解决方案中的 Silverlight 项目中访问它。 - RobertKing
1
@axa 是的,它可以工作。根据文档,GetString("key") 使用当前 UI 文化。您还可以使用特定文化获取值,例如 GetString("key", new CultureInfo("es-ES")) - Zbigniew
显示剩余3条评论

10
假设您的资源文件名为"Resource.resx",并且您想动态地传递键,则,
using System.Resources;
string resVal = Resource.ResourceManager.GetString(dynamicKeyVal);

如果它不起作用,请告诉我,我会处理并提供适当的解决方案。


4
我通常是这样访问资源的。
Resources.MyLocalised.CompanyName;

比GetString好很多 - Michael Harper

3
您可以按照以下方式使用,无需创建ResourceManager实例。资源文件已经继承了ResourceManager
string value = MyResource.ResourceManager.GetString("stringKey");

注意:MyResource是共享的资源文件名称。


我的资源文件存在于我的解决方案中的 Web 项目中,我想从同一解决方案中的 Silverlight 项目中访问它。 - RobertKing
1
如果您想在更多的项目中共享资源文件,您应该将该资源文件放入公共程序集中,并为两个项目添加引用。 - Thilina H

1
尝试使用:

string resourceValue = HttpContext.GetGlobalResourceObject("resxFilename", "resourceKey").ToString();

很明显,Rohan要求不同的东西:“需要根据代码后台提供的键访问存储在资源文件中的字符串值”。 - Zbigniew

1
如果在“属性”下有多个不同语言的“.resx”文件,并且动态更改资源文件,则可以通过以下方式从代码后台获取特定键的值。您无需提及“.resx”文件名,它会自动从当前设置的“.resx”文件(区域性)中获取值:
string str=[ProjectName].Properties.Resources.[ResourceKeyName]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接