MemberwiseClone和反射性能
 
public class BaseEntity<T> where T : struct { public T ID { get; set; } public void Clone(BaseEntity<T> target) { target = (BaseEntity<T>)this.MemberwiseClone(); } /// <summary> /// 对象间钱拷贝,target为空是,创建新对象 /// </summary> /// <param name="source">源</param> /// <param name="target">目标</param> /// <returns></returns> public BaseEntity<T> Copy(BaseEntity<T> target = null, string[] excludeProperties = null) { if (null == target) { target = new BaseEntity<T>(); } var type = this.GetType(); var properties = type.GetProperties(); var targetType = target.GetType(); var targetProperties = targetType.GetProperties(); foreach (var property in properties) { if (null != excludeProperties && excludeProperties.Contains(property.Name)) { //不处理 } else { if (targetProperties.Select(x => x.Name).Contains(property.Name)) { if (property.CanWrite) { property.SetValue(target, property.GetValue(this, null), null); } } } } return target; } }
 
public class Doctor : BaseEntity<Guid> { public int Age { get; set; } public string Name { get; set; } public bool Gender { get; set; } public override string ToString() { StringBuilder sb = new StringBuilder("Doctor{"); sb.AppendFormat("age={0},", this.Age); sb.AppendFormat("name='{0}',", this.Name); sb.AppendFormat("gender='{0}'", this.Gender); sb.Append("}"); return sb.ToString(); } }
 
static void Main(string[] args) { AA(); BB(); Console.Read(); } static void AA() { var s = new Doctor() { ID = Guid.NewGuid(), Age = 15, Name = "zhangsan", Gender = true }; var time = DateTime.Now; Console.WriteLine(time); for (int i = 0; i < 10000000; i++) { var s1 = new Doctor(); s.Clone(s1); } Console.WriteLine(DateTime.Now.Subtract(time).TotalMilliseconds); } static void BB() { var s = new Doctor() { ID = Guid.NewGuid(), Age = 15, Name = "zhangsan", Gender = true }; var time = DateTime.Now; Console.WriteLine(time); for (int i = 0; i < 10000000; i++) { var s1 = new Doctor(); s.Copy(s1); } Console.WriteLine(DateTime.Now.Subtract(time).TotalMilliseconds); }

 
                     
                    
                 
                    
                
 
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号