日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在游戲開發中,配置表是不可少的。通常我們將一個類,做成一個配置表,將配置表每列的索引都和類的字段名嚴格對應起來。

先實例化一個類的對象,然后通過反射來遍歷類中的字段,通過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; }

這樣就完成了,配置表數據到類對象數據的轉換。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。