类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换
生活随笔
收集整理的這篇文章主要介紹了
类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在游戲開發(fā)中,配置表是不可少的。通常我們將一個(gè)類,做成一個(gè)配置表,將配置表每列的索引都和類的字段名嚴(yán)格對應(yīng)起來。
先實(shí)例化一個(gè)類的對象,然后通過反射來遍歷類中的字段,通過field.SetValue()給類的對象賦值。但是配置表類型全部是string,類中的字段類型并不確定,這就需要我們再寫個(gè)函數(shù)將string類型的配置表數(shù)據(jù)轉(zhuǎn)化為不同類型的類里面的字段數(shù)據(jù)了。
配置表類 Config:
public class Config {public int id;public int age;public string name;public int[] skills; }根據(jù)Config類,構(gòu)造一個(gè)配置表 config.txt:(第一行的類型并不起作用,只是配表的時(shí)候看的)
上代碼:
public Config ConfigDemo() {//從配置表讀取string類型的字符串,key為類的字段名,必須保持一致。value是準(zhǔn)備賦值給Config對象的數(shù)據(jù)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");//構(gòu)造一個(gè)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類型轉(zhuǎn)換為不同的字段類型 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();}//...自己實(shí)現(xiàn)更多類型return null; }這樣就完成了,配置表數(shù)據(jù)到類對象數(shù)據(jù)的轉(zhuǎn)換。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker nacos mysql n
- 下一篇: SpringBoot2.x 整合 Ued