コード例 #1
0
        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)));
        }