unity3D,用sqlite中的数据,实例化类

unity用,用sqlite中的数据,实例化类

写了一个方法.用反射实例化一个类,并用sqlite的数据为其中属性赋值.

使用需要一些前提

1.你需要传入要实例化的类型.

2.你需要将实例化使用的数据读取到一个SqliteDataReader中.

这是github代码,实际运行下可能更好理解.https://github.com/943670930/DB2Entity

实际代码:

/// 

    /// Creates the object.

    /// 读取reader中数据,用数据实例化一个类

    /// 

    /// The object.

    /// Sq reader.

    /// The 1st type parameter.

    public T CreateObject(SqliteDataReader sqReader){

        //实例化一个空类

        T newObject = System.Activator.CreateInstance();

        //获取类型

        Type type = newObject.GetType ();

        //获取类型中所有public属性

        FieldInfo[] fields =  type.GetFields ();//BindingFlags.Public);

        //遍历所有属性

        foreach (FieldInfo field in fields) {

            string attrName = field.Name;//获取属性名

            int colIndex = sqReader.GetOrdinal (attrName);//获取这个属性在reader中的位置

            //从reader中取值

            object newValue = new object();

            if(field.FieldType == typeof(int)){

                newValue = sqReader.GetInt32 (colIndex);

            }else if(field.FieldType == typeof(string)){

                newValue = sqReader.GetString (colIndex);

            }

            //赋值给属性

            type.GetField (attrName).SetValue (newObject,newValue);

        }

        return newObject;

    }



有问题可以联系我微博@圆滚滚骑士

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,850评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,124评论 25 709
  • 深圳沙井的一个地方,几年前去的,不知道现在什么情况了
    图说阅读 994评论 0 0
  • 当你望着深渊的时候,深渊也在回望你,楚门之外的世界,又会有怎么样的窥探?最怕的是,我们永远无法求证自己身处在哪...
    王淦阅读 1,404评论 0 0