通常,我指的是"/>

关于本地化:对C#中的资源文件的动态引用

关于本地化:对C#中的资源文件的动态引用

Dynamic reference to resource files in C#

我有一个正在实现本地化的应用程序。

我现在需要在资源文件中动态引用一个名称。

假设我有一个名为Login.resx的资源文件,其中包含许多字符串:foo =" hello",bar =" cruel"和baz =" world"

通常,我指的是:
字符串结果= Login.foo;
和result ==" hello";

我的问题是,在代码编写时,我不知道是否要引用foo,bar或baz-我有一个包含" foo"," bar"或" baz"的字符串。

我需要类似的东西:

登录[" foo"];

有人知道是否有任何方法可以动态引用资源文件中的字符串吗?


您需要为Login.resx实例一个ResourceManager

1
2
3
4
5
var resman = new System.Resources.ResourceManager(
   "RootNamespace.Login",
    System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");

在IDE创建的资源文件的代码隐藏文件中查看生成的代码可能会有所帮助。这些文件基本上包含对向内部资源管理器进行查询的每个资源的只读属性。


如果像我一样将Resource文件放入App_GlobalResources文件夹中,则需要使用

global::System.Resources.ResourceManager
temp = new
global::System.Resources.ResourceManager("RootNamespace.Login",
global::System.Reflection.Assembly.Load("App_GlobalResources"));

我花了一些时间才弄清楚。希望这会帮助某人。 :)


推荐阅读