Unity5.x在WP8.1中无法使用Reflection API的解决方法
下班前随便写点,虽然花了不少时间但是最终得到的解决方法还是比较简单的。
第一种方法:使用WinRTLegacy.dll中的类。这个dll在生成的WP project中是自带的无需在unity工程中添加,但是这个带来的问题就是调试代码的时候不方便,因为你不放到项目中在VS的工程中就没有这个dll,对于调试代码和VS的自动补全功能影响很大。
废话不多说,用几个例子来说明用法:
#if NETFX_CORE
foreach (PropertyInfo p_info in TypeExtensions.GetPublicInstanceProperties(type))
#else
foreach (PropertyInfo p_info in type.GetProperties())
#endif #if NETFX_CORE
PropertyInfo[] proinfos = Unity.Partial.System.Type.GetProperties(srcObj.GetType(), m_bindingAttr);
#else
PropertyInfo[] proinfos = srcObj.GetType().GetProperties(m_bindingAttr);
#endif
TypeExtensions算是Unity对WP8.1的.NET Core中移除Reflection API的补充,方法算是比较全但是和原有的Type类中的方法比仍旧有很多不足,好在还有另一个类Unity.Partial.System.Type来补充。
#if NETFX_CORE
foreach (FieldInfo f_info in Unity.Partial.System.Type.GetFields(type))
#else
foreach (FieldInfo f_info in type.GetFields())
#endif
这两个类都是在同一个dll中的,用object Browser来看这个dll真心有点乱。用这两个类协作就可以解决大多数的Reflection API的问题。
第二种方法:使用类似GetRuntimeMethods这样的runtime方法
IEnumerable<MethodInfo> methods = type.GetRuntimeMethods();
同样在object Browser中可以发现有大量的方法名中带Runtime的方法,这些方法在WP8.1下有效。
PS: 宏NETFX_CORE无需在unity工程中定义,在生成的WP project中自带。
Unity5.x在WP8.1中无法使用Reflection API的解决方法的更多相关文章
- Sublime Text 无法使用Package Control的解决方法 以及 常用的插件安装过程
大概一个月之前给 Macbook air 装 Sublime Text 3 的时候,遇到过这个问题,当时解决了,现在回想,感觉忘的七七八八了,赶紧趁着还没有全忘光的时候记下来,当时的过程记得不一定准确 ...
- VS2012中丢失ArcGIS模板的解决方法
VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...
- js中style.display=""无效的解决方法
本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- SpringBoot拦截器中无法注入bean的解决方法
SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册 ...
- asp.net url址址中中文汉字参数传递乱码解决方法
中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...
- @NamedEntityGraphs --JPA按实体类对象参数中的字段排序问题得解决方法
JPA按实体类对象参数中的字段排序问题得解决方法@Entity @Table(name="complaints") @NamedEntityGraphs({ @NamedEntit ...
- 关于验证码在IE中不刷新的快速解决方法
今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码 ...
- 在启动php时,无法启动此程序,由于计算机中丢失MSVCR110.dll的解决方法
在启动php时,运行RunHiddenconsole.exe php-cgi.exe -b 127.0.0.1:9000 -c时,出现错误:无法启动此程序,由于计算机中丢失MSVCR110.dll 方 ...
随机推荐
- 《python核心编程》笔记——文件的创建、读取和显示
创建文件(makeTextFile.py)脚本提醒用户输入一个尚不存在的文件名,然后由用户输入文件每一行,最后将所有文本写入文本文件 #!/usr/bin/env python 'makeTextFi ...
- React Native填坑之旅--Stateless组件
Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...
- lockfree
为什么要lockfree 按我的理解, lockfree就是不去 调用操作系统给定的锁机制. 1. 会有system call, and system call is expensive; 比如pt ...
- 编译器错误信息: CS0433: 类型“ASP.usercontrols_total_ascx”同时存在
“/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误信息: CS0433: 类型“ASP.use ...
- 在RHEL6p5中设置网卡
前提: 在用ifconfig -a查看时已经显示出wlan0(无线网卡)的存在(即不用装驱动,驱动另记) 工具: 1.yum install wpasupplicant* 2.yum install ...
- Eclipse不能自动编译 java文件
在网上的解决方法 方法参考如下: (1) Window-->Preferences-->General-->Workspace 有个"Build automatica ...
- Webalizer中文安装解析IP配置
之前安装的都是英文的,现在替换成中文的,并且新增ip位置解析 参考地址 : http://haolulu.blog.51cto.com/3164472/630894 1.安装webalizer所需的 ...
- 一种简单的实现:Android一键换肤功能
现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,我把原作者的代码重新整理抽取出来,转换成Eclipse项目,重新整理成正确.可直接运行的项目. 代码运行结果如图. ...
- kvm虚拟机--存储池配置梳理(转)
1.创建基于文件夹的存储池(目录) 2.定义存储池与其目录 1 # virsh pool-define-as vmdisk --type dir --target /data/vmfs 3.创建已定义 ...
- Linux(centeros)下安装jdk
首先需要说明的是有的Linux系统自带jdk,这个jdk是openjdk,可以通过java-version查看 所以安装的步骤是,首先删除系统自带的(如果有)openjdk 1. rpm -qa | ...