随笔 - 27  文章 - 4 评论 - 47 trackbacks - 0
<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456


与我联系

搜索

 

常用链接

留言簿(2)

我参与的团队

随笔分类

随笔档案

文章分类

文章档案

收藏夹

技术站点

日常站点

设计站点

最新评论

阅读排行榜

评论排行榜

    在FxCop中建议代码中出现的某些字符串,比如Exception.Message这类的字符串不要直接写进代码中,而使用RescourceManager从资源文件中读取,这样做可以方便实现本地化。昨天花了好长时间,终于搞清楚应该怎么从资源文件中读值了。以下是记录。

    首先,我们要有一个资源文件,就是.resx。创建的方法可以右击项目,选择添加新项,然后在资源文件夹中选 “程序集资源文件”,Ok。我们就得到一次资源文件了。在Vs中打开它可以很方便的进行编辑,其中比较重要的是name和value字段。它们的作用,不用我说,大家都知道了吧。

    接下来就是重点了,使用RescourceManager从资源文件中读取值。以下是读取的关键的几句:

    1 ResourceManager rm = new ResourceManager( "Lupin.vClass.Runtime.StringTable", Assembly.GetExecutingAssembly());

    2 CultureInfo ci = Thread.CurrentThread.CurrentCulture;

    3 string str = rm.GetString( name, ci );

    重点在第一行中"Lupin.vClass.Runtime.StringTable", 还有 Assembly.GetExecuteingAssembly()。在这里,Lupin.vClass.Runtime是资源文件所在的项目的默认命名空间,最后一个单词StringTable就是文件名了。后面,Assembly.GetExecutingAssembly()的作用是取得当前正在执行的程序集,在这里的意义是资源文件所在的程序集。如果你读取的是其它程序集的资源文件,相应的这个要作改变。

    后面,CultureInfo是本地信息,把它作为参数传递给GetString,程序能自动从相应的文件中读取值。比如用户的默认语言中是zh-cn,那么,程序在读取的时候会读取StringTable.zh-cn.resx中读取,相应的en-us的话,就会读取StringTable.en-us.resx,如果不传CultureInfo进去的话,那就是StringTable.resx了。

posted on 2006-04-15 16:36 Lupin 阅读(302) 评论(1)  编辑 收藏 所属分类: .Net学习

FeedBack:
#1楼  2007-02-14 10:27 kkun [未注册用户]
看完了,有收获,呵呵,MARK

对了,情人节快乐!
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: