EntityUtil类

实现从一个实体向另一个实体拷贝。

 

View Code
  1 //By:Jxb
  2  public class EntityUtil
  3     {
  4 
  5         /// <summary>
  6         /// 从一个对象中拷贝数据到另一个对象(属性名一致的才会拷贝,用于泛型实体)
  7         /// </summary>
  8         /// <param name="source"></param>
  9         /// <param name="destination"></param>
 10         public static void CloneDataList<TSource, TDestination>(List<TSource> sourcelist, List<TDestination> destinationlist)
 11         {
 12             if (sourcelist != null)
 13             {
 14                 for (int i = 0; i < sourcelist.Count; i++)
 15                 {
 16                     destinationlist.Add(Activator.CreateInstance<TDestination>());
 17                     for (int x = 0; x < destinationlist.Count; x++)
 18                     {
 19                         PropertyInfo[] destinationProperties = destinationlist[destinationlist.Count - 1].GetType().GetProperties();
 20                         PropertyInfo[] sourceProperties = sourcelist[i].GetType().GetProperties();
 21 
 22                         foreach (PropertyInfo property in destinationProperties)
 23                         {
 24                             PropertyInfo sourceProperty = sourcelist[i].GetType().GetProperty(property.Name);
 25                             if (sourceProperty != null)
 26                             {
 27                                 object value = sourceProperty.GetValue(sourcelist[i], null);
 28                                 try
 29                                 {
 30                                     property.SetValue(destinationlist[destinationlist.Count - 1], value, null);
 31                                 }
 32                                 catch { }
 33                             }
 34                         }
 35                         break;
 36                     }
 37                 }
 38             }
 39         }
 40 
 41 
 42         /// <summary>
 43         /// 从一个对象中拷贝数据到另一个对象(属性名一致的才会拷贝)
 44         /// </summary>
 45         /// <param name="source"></param>
 46         /// <param name="destination"></param>
 47         public static void CloneData<TSource, TDestination>(TSource source, TDestination destination)
 48         {
 49             if (source != null)
 50             {
 51                 PropertyInfo[] destinationProperties = destination.GetType().GetProperties();
 52                 PropertyInfo[] sourceProperties = source.GetType().GetProperties();
 53                 foreach (PropertyInfo property in destinationProperties)
 54                 {
 55                     PropertyInfo sourceProperty = source.GetType().GetProperty(property.Name);
 56                     if (sourceProperty != null)
 57                     {
 58                         object value = sourceProperty.GetValue(source, null);
 59                         try
 60                         {
 61                             property.SetValue(destination, value, null);
 62                         }
 63                         catch { }
 64                     }
 65                 }
 66             }
 67         }
 68 
 69         /// <summary>
 70         /// 从一个对象中拷贝数据到另一个对象(属性名一致的才会拷贝,用于泛型实体)
 71         /// </summary>
 72         /// <param name="source"></param>
 73         /// <param name="destination"></param>
 74         public static void CloneData<TSource, TDestination>(List<TSource> sourcelist, List<TDestination> destinationlist)
 75         {
 76             if (sourcelist != null)
 77             {
 78                 for (int i = 0; i < sourcelist.Count; i++)
 79                 {
 80                     destinationlist.Add(Activator.CreateInstance<TDestination>());
 81                     for (int x = 0; x < destinationlist.Count; x++)
 82                     {
 83                         PropertyInfo[] destinationProperties = destinationlist[destinationlist.Count - 1].GetType().GetProperties();
 84                         PropertyInfo[] sourceProperties = sourcelist[i].GetType().GetProperties();
 85 
 86                         foreach (PropertyInfo property in destinationProperties)
 87                         {
 88                             PropertyInfo sourceProperty = sourcelist[i].GetType().GetProperty(property.Name);
 89                             if (sourceProperty != null)
 90                             {
 91                                 object value = sourceProperty.GetValue(sourcelist[i], null);
 92                                 try
 93                                 {
 94                                     property.SetValue(destinationlist[destinationlist.Count - 1], value, null);
 95                                 }
 96                                 catch { }
 97                             }
 98                         }
 99                         break;
100                     }
101                 }
102             }
103         }
104 
105 
106 
107         /// <summary>
108         /// 将实体里的属性与值,拷贝出来(如果值超过128个字符,则截取)
109         /// </summary>
110         /// <param name="destination"></param>
111         public static string CloneDataToString(object destination)
112         {
113             StringBuilder sb = new StringBuilder();
114             PropertyInfo[] destinationProperties = destination.GetType().GetProperties();
115             foreach (PropertyInfo item in destinationProperties)
116             {
117                 string name = item.Name.Replace("\r\n", "");
118                 object value = item.GetValue(destination, null);
119 
120                 if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
121                 {
122                     if (value != null)
123                     {
124                         if (value.ToString().Length > 128)
125                         {
126                             value = value.ToString().Substring(0, 128);
127                         }
128                     }
129                     sb.Append(string.Format("{0}:{1},", name, value));
130                 }
131             }
132             if (sb.Length > 0)
133             {
134                 sb.Remove(sb.Length - 1, 1);
135             }
136             return sb.ToString();
137         }

 

posted on 2012-05-18 09:33  魂淡  阅读(1049)  评论(51编辑  收藏  举报