private void ApplyFieldInfo(TModel model, ReaderFieldInfo fieldInfo, List <string> errors) { var value = DataReader.GetValue(fieldInfo.ColumnIndex); if (value is DBNull) { value = null; } value = fieldInfo.PropertyMap.Modifiers.Aggregate(value, (current, modifier) => modifier.ModifyValue(current, fieldInfo)); try { fieldInfo.PropertyMap.Setter.Invoke(model, new[] { value }); } catch (ArgumentException ex) { const string msg = "Could not set property '{0}' to value '{1}' from column '{2}' of type '{3}' ({4}): {5}"; errors.Add(string.Format(msg, fieldInfo.PropertyMap.PropertyName, value, fieldInfo.PropertyMap.ColumnName, DataReader.GetFieldType(fieldInfo.ColumnIndex), DataReader.GetDataTypeName(fieldInfo.ColumnIndex), ex.Message)); } }
/// <inheritdoc /> public object ModifyValue(object value, ReaderFieldInfo fieldInfo) { if (fieldInfo.PropertyMap.PropertyType != typeof(string)) { return(value); } return((value as string)?.TrimEnd()); }