在游戏开发中,配置表是不可少的。通常我们将一个类,做成一个配置表,将配置表每列的索引都和类的字段名严格对应起来。

先实例化一个类的对象,然后通过反射来遍历类中的字段,通过field.SetValue()给类的对象赋值。但是配置表类型全部是string,类中的字段类型并不确定,这就需要我们再写个函数将string类型的配置表数据转化为不同类型的类里面的字段数据了。

配置表类 Config:

public class Config
{public int id;public int age;public string name;public int[] skills;
}

根据Config类,构造一个配置表 config.txt:(第一行的类型并不起作用,只是配表的时候看的)

上代码:

public Config ConfigDemo()
{//从配置表读取string类型的字符串,key为类的字段名,必须保持一致。value是准备赋值给Config对象的数据Dictionary<string, string> dicSetting = new Dictionary<string, string>();dicSetting.Add("id", "1");dicSetting.Add("age", "8");dicSetting.Add("name", "zxs");dicSetting.Add("skills", "9,5,2,7");//构造一个Config对象Config config = new Config();Type type = config.GetType();FieldInfo[] fields = type.GetFields();foreach(var oneField in fields){object value = ChangeType(dicSetting[oneField.Name], oneField.FieldType);oneField.SetValue(config, value);}return config;
}//string类型转换为不同的字段类型
public object ChangeType(string str,Type type)
{if (type == typeof(string)){return str;}if (type == typeof(int)){return int.Parse(str);}if (type == typeof(int[])){List<int> list = new List<int>();string[] strs = str.Split(',');foreach(string one in strs){list.Add(int.Parse(one));}return list.ToArray();}//...自己实现更多类型return null;
}

这样就完成了,配置表数据到类对象数据的转换。

类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换相关推荐

  1. java 反射 单例类_利用反射机制破坏单例模式

    简介 利用反射机制破坏了单例模式,这里以懒汉单例模式为例子进行操作. 之前利用反射也是改变了类中的private变量. 类中的private变量真的private么? 正常的单例模式的实现 这里采用了 ...

  2. golang利用反射写入excel的简单工具类

    golang利用反射写入excel的简单工具类 工具类源码 使用方法 工具类源码 package excelimport ("errors""github.com/tea ...

  3. mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...

    最近做一个项目,需要对人口数据进行查询,但是人口数据分布在不同的街道表中,首先进行了数据表结构的统一,每个数据表以街道名开头,然后其他的名字都一样 前期将各个表中的字段也进行了统一 抽象出一张字典表 ...

  4. php引用公有类方法_PHP 利用反射(ReflectionClass)调用其他类的方法 | 剑花烟雨江南...

    在相对复杂的项目中,我们可以利用分层来降低代码的耦合,并封装一些公用的方法,加快我们的开发速度.因此,在实际开发中,可以将代码分为: 控制器层.服务层.逻辑层.模型层等等.... 服务层: 所谓的服务 ...

  5. vba listbox 内容输出到文本_利用剪贴板提取工作表的文本内容

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十二个专题"VBA中剪贴板(Clipboard)的应用"的第六节"利用剪贴板提取工作表的文本内容& ...

  6. python mysql 分页_利用python对mysql表做全局模糊搜索并分页实例

    在写django项目的时候,有的数据没有使用模型管理(数据表是动态添加的),所以要直接使用mysql.前端请求数据的时候可能会指定这几个参数:要请求的页号,页大小,以及检索条件. "&quo ...

  7. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  8. java两个对象赋值_一起学Java(二十六)----- 对象之间赋值

    不积跬步,无以至千里:不积小流,无以成江海. Java语言基础 Java对象之间赋值 赋值是用等号运算符" = "进行的,在对对象进行"赋值"时,实际就是将句柄 ...

  9. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

最新文章

  1. python自动化干什么-高效工作,拒绝加班,看Python自动化功能到底有多强大
  2. 第5章-Vue.js交互及生命周期练习
  3. Linux Kernel 0.01 的编译和运行
  4. the Open Source Community
  5. 2020年牛客多校第五场C题-easy(纯组合计数不要生成函数的做法)
  6. SharePoint安全 - SharePoint网站常用页面URL索引
  7. 《深入剖析Tomcat》阅读(三)
  8. python 秒数转化为时分秒
  9. 大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建
  10. 《管理的常识》3-“什么是组织结构”读后感及读书笔记
  11. Spring boot Mybatis-Plus数据库单测实战(三种方式)
  12. 如何换ionic里面的图标
  13. AUTOCAD——永久关闭栅格
  14. 【转】我的大学六年(单片机大师郭天祥原创)
  15. 实现网站访问人数统计
  16. 微信小程序 支付回调不成功排查步骤
  17. google的黑镜子 -- 思考技术元素对生活的影响
  18. 《DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification》网络模型解读
  19. dxc 4.0 控制线程
  20. SQLselect提示列名无效

热门文章

  1. 名校教授:把研究生扔到河里,游过去的就成为博士
  2. 理论物理-从规范对称的意义说下去
  3. 这里有个古老的车站:三年只为一人开
  4. 岳阳鸿蒙数学培优阶梯训练,鸿蒙应用-呼吸训练app部分练习展示(开始)
  5. jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析
  6. CentOS7开发环境搭建(1)
  7. FastDFS学习笔记
  8. WebMagic学习总结
  9. 对话阿里云MVP裔隽跨界半生,不改赤子心
  10. OPPO实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移