c# 对象类相同属性字段赋值

/// <summary>
        /// 复制基本属性值,不包含导航属性
        /// </summary>
        /// <typeparam name="T">Entity type</typeparam>
        /// <param name="source">Source entity object</param>
        /// <param name="dest">Destination entity object</param>
        public T CopyBasicProperties<T>(object source) where T : new()
        {
            T dest = new T();
            try
            {
                var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance)
                    .Where(p => p.CanRead && p.CanWrite && p.PropertyType.FullName.Contains("System") == true);
                foreach (var property in properties)
                {
                    try
                    {
                        if (property.GetSetMethod() == null) continue;
                        object value = GetPropertyValue(source, property.Name);
                        property.SetValue(dest, value, null);
                    }
                    catch (Exception ex)
                    {

                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dest;
        }

        /// <summary>
        /// 通过反射,返回属性Value
        /// </summary>
        /// <param name="para"></param>
        /// <param name="source"></param>
        /// <param name="Name"></param>
        /// <returns></returns>
        public object GetPropertyValue(object source, string Name)
        {
            if (source != null)
            {
                string[] propertys = Name.Split('.');
                Type t = source.GetType();//获得该类的Type
                var m = t.GetProperties().Where(x => x.Name == propertys.First()).FirstOrDefault();
                if (m != null)
                {
                    source = m.GetValue(source, null);
                }
                else
                {
                    source = null;
                }
                foreach (var item in propertys.Skip(1))
                {
                    source = GetPropertyValue(source, item);
                }
            }
            return source;
        }

使用方法

 Classb classb = new Classb() { Id=1,Name="sb"};
 ClassA classa =CopyBasicProperties<ClassA>(classb);

//把classb内基本属性的值  赋值到 classa内的基本属性 (前提是要命名相同才会匹配)

//通过反射对象内属性来赋值,这样的好处就是不用手动维护,而且方便

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值