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

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

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

配置表类 Config:

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

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

381b798d93f14d53298935ae4df81252.png

上代码:

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;
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能如何提升大数据存储与管理效率?

简介&#xff1a; 通过使用AI数据存储&#xff0c;供应商和企业可以将存储管理提升到一个新的水平。而且&#xff0c;存储管理员可以找到他们目前正在努力管理的指标的解决方案。 随着大数据的大量来源以及企业可用数据量的增加&#xff0c;存储容量规划已成为存储管理员的问题…

wildfly10 (JBoss)如何部署SSL证书

文章目录1. 证书下载2. 证书配置2. 效果验证项目用的wildfly-10.1.0.Final。需要用到SSL证书&#xff0c;把部署过程记录下来&#xff0c;以供参考。1. 证书下载 本文的证书申请都来自阿里云。 1.首先把你的域名做好解析。 2.从阿里云上下载申请的SSL证书&#xff0c;类型选择…

奇点云集聚数据中台优势,加速企业数智化升级

作者 | 寇雪芹 出品 | CSDN云计算 头图 | 下载于视觉中国 近日&#xff0c;以“应云而生 原力觉醒”为主题的 StartDT Day 数据技术大会在杭州举办。会上&#xff0c;奇点云发布了最新的数据技术战略“跨平台、云原生、自主可控”、云原生数据中台 DataSimba R3.0、消费者数字…

2020-10-29

简介&#xff1a; 世上没有免费的午餐&#xff0c;微服务技术让 IT 系统变得更敏捷、更健壮、更高性能的同时&#xff0c;也带来了架构复杂度的提升。对于开发者而言&#xff0c;要想更好的驾驭微服务架构&#xff0c;需要解决持续集成、服务发现、应用通信、配置管理、流量防护…

状态码202_至少 10 个 HTTP 状态码

HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;是用以表示网页服务器超文本传输协议响应状态的3位数字代码。HTTP状态码 HTTP状态码总的分为五类&#xff1a;1开头&#xff1a;信息状态码2开头&#xff1a;成功状态码3开头&#xff1a;重定向状态码4开头…

玩转 IntelliJ IDEA 2020

文章目录一、基础软件集成配置系列1. 常用快捷键2. IDEA 配置JDK项目应用 JDK3. IDEA 配置 Maven4. IDEA 配置 TOMCAT5. IDEA配置 Git6. IDEA配置的导入导出7. IDEA控制台输出乱码8. IDEA注释模板9. IDEA xml模板10. IDEA 高效开发11. SpringBoot 集成 MyBatisPlus 模板12. Spr…

CSDN 独家对话阿里云贾扬清、华先胜等大咖,剧透阿里云原生技术密码

新一轮科技革命和产业变革正重塑全球发展格局&#xff0c;以云计算为代表的新一代信息技术相互渗透&#xff0c;成为数字经济智能和创新发展新引擎。过去 12 年&#xff0c;人们对云计算的讨论从原来的“为什么上云”&#xff0c;到“为什么不上云”&#xff0c;再到如今探索“…

持续定义Saas模式云数据仓库+实时搜索

简介&#xff1a; 本文由阿里云计算平台事业部 MaxCompute 产品经理孟硕为大家带来《持续定义Saas模式云数据仓库实时搜索》的相关分享。以下是视频内容精华整理&#xff0c;主要包括以下三个部分&#xff1a;1.Why&#xff1a;概述与价值&#xff1b;2.What&#xff1a;应用场…

弹窗进度条_QQ 大更新!语音进度条来了,还有这 5 个新变化

4 月 13 日&#xff0c;QQ 迎来了 8.0.0 for iOS 的更新。在其 App Store 的更新描述中可以看到&#xff0c;本次更新不仅升级了 QQ 的界面、优化了多人语音和转发消息的体验&#xff0c;语音消息还支持暂停和进度拖动了。知晓君第一时间对新版本 QQ 进行了一番体验&#xff0c…

接入阿里巴巴商业操作系统,麦当劳中国双11发力数字化

简介&#xff1a; 此次麦当劳中国与阿里巴巴的深度合作&#xff0c;对于双方和整个餐饮行业都具有重要意义。 早上8点出门前&#xff0c;你可以打开支付宝搜索麦当劳&#xff0c;点击“优惠预点”订餐&#xff0c;在你去办公室途中&#xff0c;热腾腾的麦当劳早餐就为你准备好…

Jepsen:分布式系统最早的混沌框架

来源 | 混沌工程实践作者 | 罗冈庭头图 | 下载于ICphotoJepsen测试框架的工作模式和混沌工程的思想是一脉相承的。Jepsen测试框架可以在分布式系统上注入众多混沌事件&#xff0c;例如引入网络问题、杀死节点和生成随机负载等等&#xff0c;然后通过执行预先定义的测试操作&…

Linux 命令操作手册

文章目录一、Boot项目前后台二、进程三、防火墙四、查看系统版本五、权限赋予六、远程同步文件七、目录八、文件九、解/压缩十 、大文件分割方案十一、查看文件中关键词出现的次数十二、添加/删除/修改/查看用户和用户组十三、寻找文件十四、清空文件内容十五、磁盘占用删除包含…

天猫国际通过Hologres进行排行榜的实时交互式分析

简介&#xff1a; 本文将会为您分享天猫国际如何通过Hologres实现计算、存储、服务统一的实时交互式分析。 作者&#xff1a;景闻 阿里巴巴数据技术及产品部数据技术专家 一.业务背景 天猫国际营销活动分析实时排行榜是在大促中帮助业务快速的分析商家或者品牌的交易和流量的…

b2b优势与劣势_在Amazon Business平台销售的优点和缺点,B2B卖家清楚吗?

Amazon Business是一个B2B平台&#xff0c;拥有45000多个活跃卖家和1000多万产品&#xff0c;提供批发和各类商业折扣。很多卖家不确定是否要在Amazon Business销售&#xff0c;因此本文将详细解说Amazon Business的优点和缺点&#xff1a;优点1、直面大规模消费者很多人通过亚…

Docker 操作手册

文章目录一、docker 基础篇1. 常用命令2. 镜像操作3. 容器操作4. 文件拷贝5. 目录挂载6. Docker镜像备份与迁移二、实战应用篇CentOS Dockerdocker Oracledocker Jenkinsdocker mysqldocker Gitlab-cedocker NEXUS3docker Redisdocker RabbitMQdocker elasticsearchdocker kiba…

官宣!《新程序员·开发者黄金十年》正式发布

“在互联网还不发达的时代&#xff0c;就是《程序员》伴我成长的。”“怀念啊&#xff0c;曾经《程序员》的日子。”“我是看着《程序员》长大的&#xff0c;大二时买了创刊号。”“这可是我们这一代人大学时候满满的回忆&#xff0c;也是当时寝室中传阅最多的书。”“每年的《…

OpenKruise:解放 DaemonSet 运维之路

简介&#xff1a; 我们希望 OpenKruise 让每一位 Kubernetes 开发者和阿里云上的用户都能便捷地使用上阿里巴巴内部云原生应用所统一使用的部署发布能力&#xff01; 作者 | 王思宇&#xff08;酒祝&#xff09; 前言 OpenKruise 是阿里云开源的大规模应用自动化管理引擎&…

云原生数据湖解决方案打破数据孤岛,大数据驱动互娱行业发展

简介&#xff1a; 数据湖是以集中、统一方式存储各种类型数据&#xff0c;数据湖可以与多种计算引擎直接对接&#xff0c;我们使用OSS作为数据湖底座&#xff0c;数据统一存储在OSS中&#xff0c;有效消除了数据孤岛现象&#xff0c;多种计算与处理分析引擎能够直接对存储在数据…

三角形已知边长求高公式_五年级数学:“长方形、正方形、三角形、平行四边形、梯形” 知识重点、难点全解析,附习题!...

张老师 - 5年级(多品小学教育)里辛镇中心小学谭老师和冰溪镇县后山小学谭老师需要的这份学习资料现在分享。本资料已制作电子版下载码是&#xff1a;5odc7n2i多边形的面积知识点1公式长方形&#xff1a;周长(长宽)2 &#xff1b;字母公式&#xff1a;C(ab)2 面积长宽&am…

Maven 操作手册

文章目录一、基础操作1. 基础命令2. maven 下载安装3. 阿里云仓库4. maven仓库5. 引入maven仓库外的jar6. maven本地仓库位置7. idea配置maven8. 企业内部 maven 报错一站式解决方案一、基础操作 1. 基础命令 释义说明命令打包跳过测试mvn clean install -DskipTests打包跳过…