using( ResourceReader reader =
new ResourceReader(@"Resource1.resources") ) {
foreach( DictionaryEntry entry in reader ) {
string s = string.Format("{0} ({1})= ’{2}’",
entry.Key, entry.Value.GetType(), entry.Value);
MessageBox.Show(s);
}
}
除了类的名称和输入格式,ResourceReader 类的使用方法与 ResXResourceReader 相同,包括都不能随机访问命名项。
所以,虽然您可以将 .resx 文件转换成 .resources 文件,并使用 /resource 编译器命令行开关嵌入它,但容易得多的方法是直接在项目中让 Visual Studio .NET 接受被标记为 Embedded Resources 的 .resx 文件,然后将它编译进 .resources 文件并嵌入它,如图 4、图 5 和图 6 所示。一旦将 .resources 文件捆绑为资源,访问 .resources 文件中的资源就只需执行两个步骤的过程:
// 1. Load embedded .resources file
using( Stream stream =
assem.GetManifestResourceStream(
this.GetType(), "Resource1.resources") ) {
// 2. Find resource in .resources file
using( ResourceReader reader = new ResourceReader(stream) ) {
foreach( DictionaryEntry entry in reader ) {
if( entry.Key.ToString() == "MyString" ) {
// Set form caption from string resource
this.Text = entry.Value.ToString();
}
}
}
}
因为 ResourceReader 和 ResXResourceReader 都需要该两步过程才能找到具体的资源,因此 .NET 框架提供了 ResourceManager 类,该类公开了一个更简单的使用模型。
返回页首
资源管理器
ResourceManager 类也来自 System.Resources 命名空间,该类包装了 ResourceReader,用于在构造时枚举资源,并使用其名称公开它们:
public Form1() {
...
// Get this type’s assembly
Assembly assem = this.GetType().Assembly;
// Load the .resources file into the ResourceManager
// Assumes a file named "Resource1.resx" as part of the project
ResourceManager resman =
new ResourceManager("ResourcesApp.Resource1", assem);
文章来源于领测软件测试网 https://www.ltesting.net/