// Присваивает текущей записи свойства другой public void CopyPropertiesFrom(Record record) { foreach (PropertyInfo info in record.GetType().GetProperties()) { if (IsField(info)) { PropertyInfo myInfo = this.GetType().GetProperty(info.Name); myInfo.SetValue(this, info.GetValue(record, null), null); } } }
// Возвращает поля записи, отличные от заданной записи, в виде списка параметров для запроса public List<Parameter> GetUniqueParameters(Record defaultRecord = null) { var parameters = new List<Parameter>(); foreach (PropertyInfo info in this.GetType().GetProperties()) { if (info.Name == "id" || !IsField(info)) continue; var value = info.GetValue(this, null); if( defaultRecord != null ) { var defaultInfo = defaultRecord.GetType().GetProperty(info.Name); var defaultValue = defaultInfo.GetValue(defaultRecord, null); if (Utils.ToString(value) == Utils.ToString(defaultValue)) //if( value.Equals(defaultValue) ) continue; } parameters.Add(new Parameter(info.Name, value)); } return parameters; }