获取派生类中的资源文件数据

本文介绍了一种在不公开对象的情况下,实现资源文件国际化的技术。通过创建ResourceManager实例并使用反射获取派生类的Assembly,实现了资源文件的动态加载,支持二次开发时使用自定义资源文件替换基类资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        为了开发国际化版本的软件,我们常常使用资源文件来定义一些对不同语言区域有不同名称的字段。一般情况下,我们可以直接使用Resources.XXX类似的方式获得资源文件的项。
         但是,你会发现,当我把某个对象隐藏起来,也就是说使用非public类型的声明的对象,使用资源文件始终使用的是本装配件中指定的。如何做到既可以保持原有隐藏,又可以支持二次开发的时候,可以使用用户自定义资源文件替换掉原有基类中的资源文件呢?本人做了以下尝试。
         首先创建了三个project,分别为Common.Services,HR.Businesses ,Console三个项目进行测试,Hr.Business中MyOrder派生自Common.Services.Order中。
Snap2.jpg

  其中ResetName方法会获得派生类的资源文件。

1 ExpandedBlockStart.gif ContractedBlock.gif protected    virtual   string  ResetName()  dot.gif {
2InBlock.gif            Assembly assembly =  this.GetType().Assembly;
3InBlock.gif            string name = assembly.GetName().Name;
4InBlock.gif            ResourceManager manager = new ResourceManager(string.Format("{0}.Properties.Resources", name), assembly);
5InBlock.gif            return manager.GetString("Shirt");
6ExpandedBlockEnd.gif        }
通过创建新的 ResourceManager 实例,另外通过反射获得派生类的装配件。这样就完成了资源文件的获取工作。
有兴趣的朋友可以尝试一下,欢迎提出更好的办法,大家共同探讨。

转载于:https://www.cnblogs.com/DreamWinter/archive/2006/08/08/470978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值