using HotelPms.Share.Util;
|
using System.Data;
|
using System.Reflection;
|
|
namespace HotelPms.Share.Data;
|
|
public abstract class RecordBase : IRecord
|
{
|
/// <summary>
|
/// ef[^
|
/// </summary>
|
public object Parent { get; set; } = null;
|
|
/// <summary>
|
/// ÚWNXÉRs[·é
|
/// </summary>
|
/// <param name="dest"></param>
|
public abstract void CopyTo(object dest);
|
|
/// <summary>
|
/// f[^ðNA·é
|
/// </summary>
|
public abstract void Clear();
|
|
public abstract object? GetField(string name);
|
|
public virtual bool SetField(string name, object value)
|
{
|
return false;
|
}
|
|
/// <summary>
|
/// DataRowÌîñÅ©gðXV·é(Äp¾©çA¿åÁÆx¢)
|
/// </summary>
|
/// <param name="row"></param>
|
/// <returns></returns>
|
public abstract bool ConvertDataRow(DataRow row);
|
|
/// <summary> ieXgpj³f[^ÆärµÄÏíÁ½Æ±ëÍuV©³yIzvÆ·é
|
/// </summary>
|
/// <param name="orgItem"></param>
|
/// <returns></returns>
|
public string CompareOrgItem(RecordBase orgItem)
|
{
|
string outInfo = string.Empty;
|
try
|
{
|
if (orgItem == null) return this.ToString();
|
|
Dictionary<string, object[]> dic = new Dictionary<string, object[]>();
|
PropertyInfo[] myInfo = orgItem.GetType().GetProperties();
|
foreach (PropertyInfo item in myInfo)
|
{
|
dic.Add(item.Name, new object[] { string.Format("{0}", CConvert.GetPropertyValue(orgItem, item.Name)), null });
|
}
|
|
myInfo = this.GetType().GetProperties();
|
foreach (PropertyInfo item in myInfo)
|
{
|
dic[item.Name][1] = string.Format("{0}", CConvert.GetPropertyValue(this, item.Name));
|
|
if (dic[item.Name][1].Equals(dic[item.Name][0]))
|
{
|
outInfo += string.Format("{0} = {1}" + Environment.NewLine, item.Name, dic[item.Name][1]);
|
}
|
else
|
{
|
outInfo += string.Format("{0} = {1} © {2}yIz" + Environment.NewLine, item.Name, dic[item.Name][1], dic[item.Name][0]);
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
outInfo = ex.Message;
|
}
|
|
return outInfo;
|
}
|
}
|