WinRT:将RESX的Designer.cs改造给RESW资源文件使用
来源:互联网 发布:淘宝信誉度等级表 编辑:程序博客网 时间:2024/06/06 04:38
众所周知,Windows 8 WinRT开发中Visual Studio工程模板中的RESW资源文件没有像RESX资源文件那样,具有自动生成的属性定义。而RESX资源文件的属性定义是通过其背后的xxx.Designer.cs文件,我们要实现的就是把RESX资源文件的Designer.cs改造给RESW资源文件使用,这样RESW资源文件的字符串也可以通过一个静态类型来直接访问了。
步骤一就是定义RESX资源文件,在任何非WinRT工程中都是可以定义RESX资源文件的。定义好了RESX资源文件后,全选RESX资源文件编辑中的内容,复制,并粘贴到WinRT的RESW资源文件编辑窗口中,这样RESW资源文件就有了和RESX一样的数据内容。
步骤二是在全选RESX资源文件后的xxx.Designer.cs类型的内容,并粘贴到WinRT工程中。
接下来开始对RESX资源文件的Designer.cs进行改造,因为它是无法直接通过WinRT工程的编译的。
RESX资源文件的Designer.cs其实是通过初始化一个ResourceManager类型,然后通过GetString方法来定义所有属性,而在WinRT中,推荐使用的类型是ResourceLoader,但是ResourceManager类型本身仍然存在,可以继续使用,但是需要做一些修正才能通过编译,找到Designer.cs中的ResourceManager属性,它的定义类似这样:
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if (object.ReferenceEquals(resourceMan, null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Mgen.WpfApp.Resource", typeof(Resource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
其中这句:
new global::System.Resources.ResourceManager("Mgen.WpfApp.Resource", typeof(Resource).Assembly);
把第一个参数改为RESW的文件名称,不需要加上命名空间,比如Resources.resw就改成Resources。
第二个参数无法通过编译的,因为在WinRT中Type类型没有Assembly属性,我们需要System.Reflection命名空间内的扩展方法来获取类型的TypeInfo,然后再获取它的Assembly对象。因此需要在最上方命名空间引用上加入:
using System.Reflection;
所以这句代码最终改成:
new global::System.Resources.ResourceManager("Resources", typeof(Resource).GetTypeInfo().Assembly);
关于GetTypeInfo,可以参考另一篇文章:.NET 4.5(C#):TypeInfo类型和反射中的成员枚举。
关于ResourceManager和RESX文件,可以参考:.NET(C#):浅谈程序集清单资源和RESX资源。
最后就可以通过静态类型来访问RESW的资源数据了,类似这样:
async private void Button_Click_1(object sender, RoutedEventArgs e)
{
await new Windows.UI.Popups.MessageDialog(Resource.a).ShowAsync();
}
当然如果RESW资源变化后,读者必须重新再复制RESW资源内容到RESX编辑器中,然后再把RESX的Designer.cs内容更新到修改后的RESW的Designer.cs中。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- WinRT:将RESX的Designer.cs改造给RESW资源文件使用
- .designer.cs 和 .resx 文件是干什么用的?
- C#下移动winform窗体(cs文件)后导致.Designer.cs、.resx文件分离出来
- C# winform窗体(cs文件) .Designer.cs、.resx 文件分离出来 同级问题
- C# 使用资源文件 Resource.resx 的方法
- C# 使用资源文件 Resource.resx 的方法
- C# 使用资源文件 Resource.resx 的方法
- .NET使用资源文件resx、Resources
- C# wpf 使用资源文件 resx
- Resx资源文件的另类用法
- designer.cs 文件的作用
- WebForm程序中使用资源文件(.resx)中的资源
- C# 资源文件Resources.resx的使用 最快捷最犀利
- 使用resgen工具将.resource文件转换成.resx文件
- aspx.cs和aspx.resx是什么文件
- 资源文件resources转resx
- c#:操作resx资源文件
- 【Windows 10 应用开发】细说文本资源文件(resw)
- 怎样从 Javascript 传递一个变量到 PHP?
- C语言学习之内存管理函数malloc()和free()
- Java中main()的理解
- socketpair的问题
- 程序的内存分配(转)
- WinRT:将RESX的Designer.cs改造给RESW资源文件使用
- ORACLE SQL常用五大注意点
- socket通讯,可以相应多个客户端源码
- C++继承的一些知识
- LIS 算法解析
- 我的博客旅行之Android环境搭建
- 判断三角形
- C#简单的面试题目(四)
- 大整数加法