/// <summary>
/// C#对比两个实体类 是否一致。
/// </summary>
public class CtrstM
{
/// <summary>
/// 深度复制
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static T DeepCopy<T>(T obj)
{
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, obj);
memoryStream.Seek(0, SeekOrigin.Begin);
var t = (T)binaryFormatter.Deserialize(memoryStream);
return t;
}
/// <summary>
/// 对比是否有修改
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <param name="s"></param>
/// <returns></returns>
public static bool ForCheck<T>(T t,T s)
{
Type type = typeof(T);
PropertyInfo[] ps = type.GetProperties();
int rst = 0;
foreach (PropertyInfo pp in ps)
{
var val_t = pp.GetValue(t);
var val_s = pp.GetValue(s);
if (val_s == null)
{
val_s="";
}
if (val_t == null)
{
val_t = "";
}
if (val_t.GetType() == typeof(String))//深度复制 字符串差异-> 无转空、大写转小写、首字母加空格
{
if (val_s == null) val_s = "";
if (val_t.ToString().ToUpper() == val_s.ToString().ToUpper())
{
continue;
}
if (val_t.ToString().Trim() == val_s.ToString().Trim())
{
continue;
}
}
if (!Equals(val_t, val_s))
rst++;
}
return rst == 0;//没改
}
}