利用.Net反射机制实现一个“实体数据异同比较”功能!
2007-08-29 23:26 魏冉 阅读(569) 评论(0) 编辑 收藏 举报
利用.Net反射机制实现一个“实体数据异同比较”功能!
代码内容
/// <summary>
///
/// </summary>
/// <typeparam name="object1"></typeparam>
/// <typeparam name="object2"></typeparam>
public class ObjectCompare<object1>
{
/// <summary>
///
/// </summary>
/// <param name="original"></param>
/// <param name="newobject"></param>
/// <returns></returns>
public string Compare(object1 original, object1 newobject)
{
StringBuilder resultStr = new StringBuilder();
if (original.GetType() == newobject.GetType() && !original.Equals(newobject))
{
PropertyInfo[] properties = typeof(object1).GetProperties();
for (int i = 0; i < properties.Length; i++)
{
if (!properties[i].GetValue(original, null).Equals(properties[i].GetValue(newobject, null)))
{
resultStr.Append(string.Concat(properties[i].Name, ":"));
resultStr.Append(properties[i].GetValue(original, null));
resultStr.Append("→");
resultStr.Append(properties[i].GetValue(newobject, null));
resultStr.Append("<br />");
}
}
}
return resultStr.ToString();
}
}
/// <summary>
///
/// </summary>
/// <typeparam name="object1"></typeparam>
/// <typeparam name="object2"></typeparam>
public class ObjectCompare<object1>
{
/// <summary>
///
/// </summary>
/// <param name="original"></param>
/// <param name="newobject"></param>
/// <returns></returns>
public string Compare(object1 original, object1 newobject)
{
StringBuilder resultStr = new StringBuilder();
if (original.GetType() == newobject.GetType() && !original.Equals(newobject))
{
PropertyInfo[] properties = typeof(object1).GetProperties();
for (int i = 0; i < properties.Length; i++)
{
if (!properties[i].GetValue(original, null).Equals(properties[i].GetValue(newobject, null)))
{
resultStr.Append(string.Concat(properties[i].Name, ":"));
resultStr.Append(properties[i].GetValue(original, null));
resultStr.Append("→");
resultStr.Append(properties[i].GetValue(newobject, null));
resultStr.Append("<br />");
}
}
}
return resultStr.ToString();
}
}