类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换
生活随笔
收集整理的這篇文章主要介紹了
类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在游戲開發中,配置表是不可少的。通常我們將一個類,做成一個配置表,將配置表每列的索引都和類的字段名嚴格對應起來。
先實例化一個類的對象,然后通過反射來遍歷類中的字段,通過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; }這樣就完成了,配置表數據到類對象數據的轉換。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker nacos mysql n
- 下一篇: MQ相关面试题