反射应用和集合按照某个字段排序

时间:2022-05-26 15:01:27
这些天在工作中遇到了动态绑定数据列的问题;于是用到了反射机制来实现这些功能;例如: chitemlst[i].lcWorkLinkDtos.Sort(delegate(CodeDto v1, CodeDto v2) { return Comparer<string>.Default.Compare(v1.code, v2.code); });
对集合中的某个字段进行排序的方法;使用集合的Sort()方法来声明个委托来进行比较;例如上面的例子,对集合中CodeDto类的code字段来进行排序;
foreach (PropertyInfo info in dtoV.GetType().GetProperties())
     {
         if (info.Name == dtoF.chkItemValue)
              {
                  info.SetValue(dtoV, response.responseObjects[i].chkItemValue_cnName, null);
                  string name = string.Empty;
                  name = info.Name.Remove(0, 12);
                  dtoV.GetType().GetProperty("chkItemId" + name).SetValue(dtoV, response.responseObjects[i].id, null);
                  dtoV.GetType().GetProperty("chkItemName" + name).SetValue(dtoV, response.responseObjects[i].itemName, null);
                  dtoV.GetType().GetProperty("chkItemCode" + name).SetValue(dtoV, response.responseObjects[i].itemCode, null);
                  break;
               }
      }
利用反射机制来实现对字段的动态加载;dtoV.GetType().GetProperties() 用来获取PropertyInfo集合中的属性;
dtoV.GetType().GetProperty("chkItemId" + name).SetValue(dtoV, response.responseObjects[i].id, null);通过反射来给对应的字段赋值;
一下两个例子说明通过反射机制动态获取和设置动态字段: /通过反射机制动态为属性赋值;dtoV为对应的实体;response.responseObjects[i].id为动态 属性赋值对应的值来源;      
string chItemid=dtoV.GetType().GetProperty("chkItemId" + name).SetValue(dtoV,
response.responseObjects[i].id, null);
//通过反射机制获取动态属性对应的值;dto.dtoDetails[i]为对应的实体;"chkItemName" +
name为实体中的动态字段;
string name=(string)dto.dtoDetails[i].GetType().GetProperty("chkItemName" +
name).GetValue(dto.dtoDetails[i], null);  

本文出自 “zhangjingjing” 博客,请务必保留此出处http://zhjjzhjj.blog.51cto.com/1802676/792888