/// <summary> /// /// </summary> /// <param name="web"></param> /// <param name="entity">Map to entity</param> /// <param name="properties">Map from properties</param> public void Map(SPWeb web, BaseSPEntity entity, SPItemEventProperties properties) { SPList list = properties.List; foreach (FieldToPropertyMapping fieldMapping in FieldMappings) { SPField field = list.Fields.GetField(fieldMapping.FieldName); object fieldValue; bool hasProperty = properties.AfterProperties .Cast <DictionaryEntry>() .Any(e => e.Key.Equals(field.InternalName)); if (hasProperty) { fieldValue = properties .AfterProperties[field.InternalName]; } else { fieldValue = properties.ListItem ?? properties.ListItem[fieldMapping.FieldName]; } var propertyValue = ToPropertyValue(web, field, fieldMapping, fieldValue); fieldMapping.PropertyInfo.SetValue(entity, propertyValue); } }
public void Map(SPWeb web, SPListItem to, BaseSPEntity from) { var fieldMappingsToFieldValues = FieldMappingsToFieldValues(web, to.ParentList, from); foreach (var fieldMappingsToFieldValue in fieldMappingsToFieldValues) { (FieldToPropertyMapping fieldMapping, object fieldValue) = fieldMappingsToFieldValue; try { to[fieldMapping.FieldName] = fieldValue; } catch (Exception ex) { string errorMessage = $@"Не удалось записать значение {fieldValue} в поле {fieldMapping.FieldName} для сущности {typeof(TEntity).FullName}."; var nextException = new Exception(errorMessage, ex); Logger.Error(errorMessage, nextException); throw nextException; } } }