namespace CommonHelper { using System; public static class ObjExtend { /// /// 从目标对象中复制属性的值,执行浅表复制 /// /// 对象类型 /// 复制目标 /// 复制原 /// public static T CopyFrom(this T t,object s) where T : class { foreach(var p in s.GetType().GetProperties()) { if(p.CanRead) { var tp = t.GetType().GetProperty(p.Name); if(tp != null && tp.CanWrite && canConvert(p.PropertyType,tp.PropertyType)) { tp.SetValue(t,p.GetValue(s)); } } } return t as T; } /// /// 判断一个类型是否可以转换为另一个类型 /// /// 原类型 /// 目标类型 private static bool canConvert(Type source,Type target) { //引用类型判断 if(target.IsAssignableFrom(source)) { return true; } //Nullable<>类型判断 //值类型判断 return false; } } }