zoukankan      html  css  js  c++  java
  • 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中自带。

     
     
  • 相关阅读:
    VMware80端口映射
    固态硬盘安装win7系统问题。
    正向代理服务器,反向代理服务器
    Oray.com花生壳路由器配置注意
    Nginx命令
    Nginx反向代理图片总结
    C#获取视频文件播放长度
    汉语拼音的发展
    MVC 公共类App_Code不识别
    记录一下学习Android的小知识
  • 原文地址:https://www.cnblogs.com/klkucan/p/5383708.html
Copyright © 2011-2022 走看看