• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Microsoft .NET 框架资源基础

发布: 2009-8-17 10:50 | 作者: 不详 | 来源: 领测软件测试网 | 查看: 135次 | 进入软件测试论坛讨论

领测软件测试网

.resources 扩展名来自于在将 .resx 文件作为资源嵌入之前 Visual Studio .NET 处理该文件时所使用的工具。工具名称是 resgen.exe,它用来将 .resx XML 格式“编译”为二进制格式。可以手动将 .resx 文件编译成 .resources 文件,如下所示:

C:\> resgen.exe Resource1.resx

在将 .resx 文件编译成 .resources 文件以后,就可以使用 System.Resources 命名空间中的 ResourceReader 来枚举它:

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 fileusing( 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();      }    }  }}

因为 ResourceReaderResXResourceReader 都需要该两步过程才能找到具体的资源,因此 .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);  // Set form caption from string resource  this.Text = (string)resman.GetObject("MyString"); // The hard way  this.Text = resman.GetString("MyString"); // The easy way}

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网