C#反射类读取配置表 PropertyInfo

34 篇文章 0 订阅

配置表表头截图
类似这样很复杂的配置表 解析起来需要很长篇的代码, 但是作为一个程序肯定不能让自己的代码这么长篇大论 所以我们需要用很短的代码来解析 读取里面全部数据

 var cfgProperty = ConfigMgr.Ins.GetTreasureTableConfigMap () [id];//这是拿到了这个表
            List<TreasureTable> lists = new List<TreasureTable> ();//用来存取新的结构 的类
            System.Reflection.PropertyInfo [] info = cfgProperty.GetType ().GetProperties ();
            for ( int i = 0 ; i < info.Length ; i++ )
            {
                if ( info [i].Name == "Parser" || info [i].Name == "Descriptor" || info [i].Name == "Id" || info [i].Name == "Note" )
                {
                    continue;//跳过/排除不需要的内容
                }
                if ( info [i].GetValue (cfgProperty , null) == null || ( int ) info [i + 1].GetValue (cfgProperty , null) == 0 )
                {
                    break;//遇到空的内容说明结束了
                }
                //对应把值取出来
                string table = ( string ) info [i].GetValue (cfgProperty , null);
                int dropItem = ( int ) info [i + 1].GetValue (cfgProperty , null);
                int upLimit = ( int ) info [i + 2].GetValue (cfgProperty , null);
                int lowLimit = ( int ) info [i + 3].GetValue (cfgProperty , null);
                TreasureTable sr = new TreasureTable (table , dropItem , upLimit , lowLimit);//取出来的值实例化出新的类
                lists.Add (sr);//把类存进列表里
                i += 3;//上面取值i+3了 , 我们下一次取值也直接i+3开始(可i+n)
            }

这样子整个列表就被取出来存进新的类了 不用再很麻烦的一个个取值了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用反射C#中实现自动生成结构,可以按照以下步骤进行操作: 1. 创建一个结构中的每个字段。每个字段应该包括名称、数据型和其他相关属性。 ```csharp public class Column { public string Name { get; set; } public Type DataType { get; set; } public int Length { get; set; } // 其他属性 } ``` 2. 创建一个结构。该应该包括名和字段列。 ```csharp public class Table { public string TableName { get; set; } public List<Column> Columns { get; set; } public Table() { Columns = new List<Column>(); } } ``` 3. 使用反射获取的属性信息,并根据每个属性创建对应的字段。 ```csharp public Table CreateTableStructure(Type type) { Table table = new Table(); table.TableName = type.Name; PropertyInfo[] properties = type.GetProperties(); foreach (PropertyInfo property in properties) { Column column = new Column(); column.Name = property.Name; column.DataType = property.PropertyType; // 设置其他属性,如长度、是否允许空等 table.Columns.Add(column); } return table; } ``` 4. 调用上述方法,传入要生成结构的型,即可获取对应的结构。 ```csharp Table table = CreateTableStructure(typeof(YourClass)); ``` 通过反射,可以动态地获取的结构信息,并根据这些信息生成结构。这样可以减少手动编写结构的工作量,并提高代码的可维护性和灵活性。注意,上述示例仅展示了基本的结构生成过程,实际应用中可能需要更多的处理和处理逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值