题
我有一个正在实施本地化的应用程序。
我现在需要动态引用资源文件中的名称。
假设我有一个名为 Login.resx 的资源文件,其中有一些字符串:foo=“你好”,bar=“残酷”和 baz=“世界”
通常,我会称为:字符串结果 =Login.foo;结果==“你好”;
我的问题是,在代码时,我不知道是否要引用 foo、bar 或 baz - 我有一个包含“foo”、“bar”或“baz”的字符串。
我需要类似的东西:
登录[“foo”];
有谁知道是否有任何方法可以动态引用资源文件中的字符串?
解决方案
你需要实例化一个 ResourceManager
为了 Login.resx
:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Login",
System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");
查看 IDE 创建的资源文件的代码隐藏文件中生成的代码可能会有所帮助。这些文件基本上包含对内部资源管理器进行查询的每个资源的只读属性。
其他提示
如果您像我一样将资源文件放在 App_GlobalResources 文件夹中,则需要使用
全局:: System.Resources.ResourceManager temp = new Global :: System.Resources.ResourceManager(“ rootnamespace.login”,global :: System.Reflection.Reflection.Assembly.load(“ app_globalresources”));
我花了一段时间才弄清楚这一点。希望这会对某人有所帮助。:)
不隶属于 StackOverflow