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;
}
}
}