public Result <object, IValidationError> Map(string value, Type propertyType, int rowIndex, ColumnMapping columnMapping) { if (string.IsNullOrEmpty(value)) { return(HandleEmptyValue(columnMapping.ColumnIndex, rowIndex, columnMapping)); } if (columnMapping.CustomValueParser.IsNotNull()) { try { var parsedValue = columnMapping.CustomValueParser(value); return(Result.Ok <object, IValidationError>(parsedValue)); } catch (Exception) { var parsingValidationError = ParsingValidationError.CouldNotParseValue( columnMapping.ColumnIndex, rowIndex, columnMapping.DisplayName, columnMapping.PropertyName); return(Result.Fail <object, IValidationError>(parsingValidationError)); } } return(_valueParser .Parse(propertyType, value, columnMapping.Format) .OnValidationSuccess(parsedValue => parsedValue) .OnValidationFailure(error => ParsingValidationError.CouldNotParseValue( columnMapping.ColumnIndex, rowIndex, columnMapping.DisplayName, columnMapping.PropertyName))); }