代码阅读总结之Fitch and Mather 7.0(资源文件Resource随笔)
在Fitch and Mather 7.0中利用了大量的资源文件
资源文件对创建和本地化提供全面的支持
资源可以包含多种形式的数据,包括字符串、图像和持久的对象
通过在资源文件中存储数据,无需重新编译即可更改数据。
为了将持久对象写入资源文件,这些对象必须是可序列化的。
Fitch and Mather 7.0在命名空间FMStocks7.Common中创建了一个ResourcesCollection集会类
此类定义了一个构造器和2个索引器
构造器初始化一个私有的ResourceManager实例
索引用来读取资源文件中的数据
在类BLO中,我们看到初始化了一个ResourcesCollection
protected static ResourcesCollection Resources= new ResourcesCollection( Assembly.GetExecutingAssembly() );
因为ResourceManagers 的使用成本较大,所以声明一个静态ResourceManagers(除非有特殊需要才声明多个),并在类级别进行声明,进一步节约内存资源。
在类Ticker中通过索引器得到资源文件中记录的数值
private static readonly string DailyVolHeading = Resources[ "Ticker.DailyVolHeading" ];
看了半天知道资源文件的使用,但是我们将怎么创建一个资源文件呢?
经过摸索,我总结如下:
资源文件有2种格式
1..resx(基于 XML 的资源格式)文件
2.公共语言运行库二进制 .resources 文件
创建资源文件的方式有3种
1. 用.NET Framework 工具资源文件生成器 (Resgen.exe)
Resgen.exe 可以进行下列转换:
将 .txt 文件转换为 .resources 文件或 .resx 文件。
将 .resources 文件转换为文本文件或 .resx 文件。
将 .resx 文件转换为文本文件或 .resources 文件。
先创建一个文本文件先创建一个文本文件strings.txt
在里面写下
;1
welcome = Welcome to you
;2
par = gogogo
注意:有个分号的行是该文件中的注释,它供自己使用的
再到命令窗口中输入
d:\resgen.exe d:\strings.txt d:\strings.resX
这样就成功创建了一个xml形式的资源文件strings.resx
2. 利用编程的方式来创建资源文件
创建一个控制台程序
具体代码如下:
using System.Reflection;
using System.Resources;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
IResourceWriter writer = new ResourceWriter("myR.resources");
Bitmap b = new Bitmap("us50.gif");
writer.AddResource("String1", "one");
writer.AddResource("String2", "two");
writer.AddResource("pic", b);
writer.Close();
}
}
}
这样不仅可以把字符,还可以把图片也放入到资源文件中
运行此控制台会得到资源文件myR.resources
1. 通过vs2003来创建资源文件
此方法最简单,我就不多说了
创建好资源文件后就可以在自己的项目中引用它们了
特别要注意的是一定要在vs中设定好资源文件的使用属性
生成操作属性要设置为” 嵌入的资源”
见图片:
我又编写了一个控制台程序来引用我的资源文件
代码如下:
using System.Reflection;
using System.Resources;
namespace con2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Assembly ass=Assembly.GetExecutingAssembly();
string name="con2.strings";
ResourceManager rs=new ResourceManager(name,ass);
ResourceManager rsmyR=new ResourceManager("con2.myR",ass);
Console.WriteLine("strings Resource:" + rs.GetObject("welcome"));
Console.WriteLine("myR Resource:" +rsmyR.GetObject("String2"));
Console.ReadLine();
}
}
}
打印出:
Welcome to you
Two
特别提示:
ResourceManager类的构造函数的第一个参数是资源的根名称
它由名称空间+资源文件名组成(不要扩展名)
ass.GetManifestResourceNames()方法可以得到所有资源的名称
ass.GetName().Name属性可以得到空间名
希望上面提到的知识对你有所提示
当然欢迎交流和指正
B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex
希望上面提到的知识对您有所提示,同时欢迎交流和指正
作者:aierong
出处:http://www.cnblogs.com/aierong
贴子以"现状"提供且没有任何担保,同时也没有授予任何权利!
本文版权归作者所有,欢迎转载!
原创技术文章和心得,转载注明出处!这也是对原创者的尊重!