14

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

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

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

通常,我将其称为: String result =Login.foo; 结果==“你好”;

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

我需要类似的东西:

登录["foo"];

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

4

2 回答 2

20

您需要ResourceManagerLogin.resx

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

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

于 2008-08-27T10:35:46.290 回答
2

如果您像我一样将资源文件放在 App_GlobalResources 文件夹中,则需要使用

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

我花了一段时间才弄清楚这一点。希望这会对某人有所帮助。:)

于 2010-05-20T21:38:50.297 回答