自动赋值方法CloneObjectData<SourceType, CloneType>-atnet类库

使用场景:在两个有相同属性的类之间拷贝数据,bool ignoreNullValue参数可选是否忽略空值拷贝

方法定义:

/// <summary>
        /// 拷贝对象的数据
        /// </summary>
        /// <param name="s">包含数据的对象</param>
        /// <param name="c">要拷贝数据的对象</param>

        /// <param name="ignoreNullValue">是否忽略空值</param>
       public static void CloneObjectData<SourceType, CloneType>(SourceType s, CloneType c,bool ignoreNullValue);

使用范例:

using Atnet.Data;
   
public static void GetCustomProfile(Account account)
        {
            pa_AccountInfoControl p = new pa_AccountInfoControl { AccountName = account.AccountName };
            p.ExecuteNonQuery();
            DataHelper.CloneObjectData<pa_AccountInfoControl, Account>(p, account, false);
        }

        public static void UpdateCustomProfile(Account account)
        {
            pa_AccountInfoControl p = new pa_AccountInfoControl();
            DataHelper.CloneObjectData<Account,pa_AccountInfoControl>(account, p, false); 
            p.ExecuteNonQuery();
        }

pa_AccountInfoControl为代码生成器生成的存储过程类,Account为一个实体类,方法实现了更新和获得数据!

东方网新,为您提供专业的网站建设,软件开发,网络营销SEO,网络推广服务,代理国外主机空间,域名注册,服务热线:(+86)18608275575,电子邮件:master#atnet.cc;欢迎您访问东方网新网站: www.atnet.cc

源代码:

/*
 * Author   :   Newmin
 * Date     :   2010/10/27
 * siteuri    :   http://blog.atnet.cc/atnetlib/
 */
namespace HuiShi.Data
{
    using System;
    using System.Reflection;
    using System.Collections.Generic;
    using System.Text;

    /// <summary>
    /// 数据辅助类
    /// </summary>
    public static class DataHelper
    {
        /// <summary>
        /// 拷贝对象的数据
        /// </summary>
        /// <param name="s">包含数据的对象</param>
        /// <param name="c">要拷贝数据的对象</param>
        public static void CloneObjectData<SourceType, CloneType>(SourceType s, CloneType c)
        {
            CloneObjectData<SourceType, CloneType>(s, c, true);
        }
        /// <summary>
        /// 拷贝对象的数据
        /// </summary>
        /// <param name="s">包含数据的对象</param>
        /// <param name="c">要拷贝数据的对象</param>
        /// <param name="ignoreNullValue">是否忽略空值</param>
        public static void CloneObjectData<SourceType, CloneType>(SourceType s, CloneType c,bool ignoreNullValue)
        {
            //获取各自的属性
            PropertyInfo[] props = typeof(SourceType).GetProperties();
            PropertyInfo[] cp = typeof(CloneType).GetProperties();

            PropertyInfo _p;                                //PropertyInfo       
            object _pv;                                     //PropertyValue
            foreach (PropertyInfo p in props)
            {
                _p = Array.Find(cp, a => string.Compare(a.Name, p.Name, true) == 0);
                if (_p != null)
                {
                    _pv = p.GetValue(s, null);
                    if (!ignoreNullValue && _pv == null) continue;
                    _p.SetValue(c, _pv, null);
                }
            }
        }
    }
}

 

原创文章转载请注明出处!

原文链接:http://blog.atnet.cc/atnetlib/cloneobjectdata/

atnet项目专栏及源代码下载:http://blog.atnet.cc/atnetlib/ 

 

转载于:https://www.cnblogs.com/newmin/archive/2010/10/28/atnetlib-CloneObjectData.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值