C#中资源文件的动态引用
Posted
技术标签:
【中文标题】C#中资源文件的动态引用【英文标题】:Dynamic reference to resource files in C# 【发布时间】:2010-09-06 23:43:37 【问题描述】:我有一个正在实施本地化的应用程序。
我现在需要在资源文件中动态引用一个名称。
假设我有一个名为 Login.resx 的资源文件,其中包含多个字符串:foo="hello"、bar="cruel" 和 baz="world"
通常,我会这样称呼: 字符串结果 =Login.foo; 和 result=="hello";
我的问题是,在代码时,我不知道是否要引用 foo、bar 或 baz - 我有一个包含“foo”、“bar”或“baz”的字符串。
我需要类似的东西:
登录["foo"];
有谁知道是否有办法动态引用资源文件中的字符串?
【问题讨论】:
【参考方案1】:您需要为Login.resx
实例化一个ResourceManager
:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Login",
System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");
查看 IDE 创建的资源文件的代码隐藏文件中生成的代码可能会有所帮助。这些文件基本上包含对内部资源管理器进行查询的每个资源的只读属性。
【讨论】:
或者更简单,您可以访问资源本身的ResourceManager
。例如Login.ResourceManager.GetString("foo")【参考方案2】:
如果你像我一样把你的资源文件放在 App_GlobalResources 文件夹中,你需要使用
global::System.Resources.ResourceManager 温度=新 global::System.Resources.ResourceManager("RootNamespace.Login", global::System.Reflection.Assembly.Load("App_GlobalResources"));
我花了一段时间才弄明白。希望这会对某人有所帮助。 :)
【讨论】:
以上是关于C#中资源文件的动态引用的主要内容,如果未能解决你的问题,请参考以下文章
从 Apache Spark Streaming 上下文访问 JAR 中资源目录中的文件