asp.net 自动遍历实体类

本文介绍了一种通用方法,用于循环输出实体类的所有属性名称及属性值,并提供了一个自动生成实体类实例的方法。这些方法可以简化对大量实体类的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  最近做项目需要读取修改前数据库中被修改的数据所有的信息,一开始想要在model层的每个类都写一个函数return一串字符串,

但是由于表太多,实体类数量太大,写出来太浪费时间,所以决定写一个通用的方法输出

/// <summary>
/// 循环输出实体类的各属性名称和属性值
/// </summary>
/// <param name="Entity">实体</param>
/// <returns></returns>
public string ResolvingTableRow(object Entity)
{
  Type EntType = Entity.GetType();
  PropertyInfo[] propertys = EntType.GetProperties();
  string tempName = string.Empty;
  foreach (PropertyInfo pi in propertys)
  {
    tempName = tempName + pi.Name+"";
    string tem = pi.ToString();
    if (pi.GetValue(Entity, null) != null)
    {
      tempName = tempName + pi.GetValue(Entity, null).ToString()+"";
    }
    else
    {
      tempName = tempName + "";
    }
  }
  return tempName;
}

 

既然有通用的遍历实体类属性值的方法,那就一定也有自动生成实体类的方法,两种方法的代码大体上没什么区别

/// 根据类型填充单个实体类
/// </summary>
/// <param name="Souce"></param>
/// <param name="Entity"></param>
/// <param name="EntType"></param>
/// <returns></returns>
public static object ResolvingTableRow(DataRow Souce, object Entity)
{
  Type EntType = Entity.GetType();
  object User = Activator.CreateInstance(EntType);
  PropertyInfo[] propertys = EntType.GetProperties();
  string tempName = string.Empty;
  foreach (PropertyInfo pi in propertys)
  {
    tempName = pi.Name;//将属性名称赋值给临时变量
    if (Souce.Table.Columns.Contains(tempName))
    {
      // 判断此属性是否有Setter
      if (!pi.CanWrite) continue;//该属性不可写,直接跳出
      //取值 011
      object value = Souce[tempName];
      if (value != DBNull.Value)
      {
        //value = CheckObjValue(value, pi);
        //如果非空,则赋给对象的属性
        pi.SetValue(User, value, null);
      }
    }
  }
  return User;
}

 

转载于:https://www.cnblogs.com/xuxw/p/3435969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值