通过反射将数组中的元素给一个对象中的各个字段赋值

现有一个附加信息对象AttachedInfo,它里面分别有Info01、Info02.....Info10一共十个附加信息字段,现在参数传过来是一个string[]数组,要怎么才能将这个数组中的元素分别对应到这个对象中的各个字段呢,通过反射就可以实现,即使后期AttachedInfo中的Info字段增加,或者说string[]中的元素个数与AttachedInfo中的Info字段个数不一致也没关系。


                        AttachedInfo ai = new AttachedInfo();
                        //通过反射将AttachedInfo中的属性映射成一个属性数组
                        Reflection.PropertyInfo[] propList = typeof(AttachedInfo).GetProperties();
                        //遍历该数组中的属性
                        propList.ToList().ForEach(p =>
                            {
                                //将Info开头的属性全都找出来
                                if (p.Name.StartsWith("Info"))
                                {
                                    //因为属性Info的后两位都是01、02的数字,因此可以去掉前缀Info,以此来对应string[]数组中的元素索引
                                    int index = Convert.ToInt32(p.Name.TrimStart('I','n','f','o'));
                                    //判断索引是否超出了string[]数组
                                    if (index <= smr.AttachedInfos.Count())
                                    {
                                        //给每个对象中的字段赋值
                                        p.SetValue(ai, smr.AttachedInfos[index - 1], null);
                                    }
                                    else
                                    {
                                        p.SetValue(ai, null, null);
                                    }
                                }
                            });

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值