Пример #1
0
        public void Copy(Operation operation, object objectToApplyTo)
        {
            if (operation == null)
            {
                throw new ArgumentNullException(nameof(operation));
            }

            if (objectToApplyTo == null)
            {
                throw new ArgumentNullException(nameof(objectToApplyTo));
            }

            // Get value at 'from' location and add that value to the 'path' location
            if (TryGetValue(operation.from, objectToApplyTo, operation, out var propertyValue))
            {
                // Create deep copy
                var copyResult = ConversionResultProvider.CopyTo(propertyValue, propertyValue?.GetType());
                if (copyResult.CanBeConverted)
                {
                    Add(operation.path,
                        copyResult.ConvertedInstance,
                        objectToApplyTo,
                        operation);
                }
                else
                {
                    var error = CreateOperationFailedError(objectToApplyTo, operation.path, operation, Resources.FormatCannotCopyProperty(operation.from));
                    ErrorReporter(error);
                    return;
                }
            }
        }
Пример #2
0
    protected virtual bool TryConvertValue(object value, Type propertyType, out object convertedValue)
    {
        var conversionResult = ConversionResultProvider.ConvertTo(value, propertyType);

        if (!conversionResult.CanBeConverted)
        {
            convertedValue = null;
            return(false);
        }

        convertedValue = conversionResult.ConvertedInstance;
        return(true);
    }
Пример #3
0
    protected virtual bool TryConvertValue(object value, IContractResolver contractResolver, out TValue convertedValue, out string errorMessage)
    {
        var conversionResult = ConversionResultProvider.ConvertTo(value, typeof(TValue), contractResolver);

        if (conversionResult.CanBeConverted)
        {
            errorMessage   = null;
            convertedValue = (TValue)conversionResult.ConvertedInstance;
            return(true);
        }
        else
        {
            errorMessage   = Resources.FormatInvalidValueForProperty(value);
            convertedValue = default(TValue);
            return(false);
        }
    }
Пример #4
0
    protected virtual bool TryConvertKey(string key, out TKey convertedKey, out string errorMessage)
    {
        var conversionResult = ConversionResultProvider.ConvertTo(key, typeof(TKey));

        if (conversionResult.CanBeConverted)
        {
            errorMessage = null;
            convertedKey = (TKey)conversionResult.ConvertedInstance;
            return(true);
        }
        else
        {
            errorMessage = Resources.FormatInvalidPathSegment(key);
            convertedKey = default(TKey);
            return(false);
        }
    }
Пример #5
0
    protected virtual bool TryConvertValue(
        object originalValue,
        Type listTypeArgument,
        string segment,
        IContractResolver contractResolver,
        out object convertedValue,
        out string errorMessage)
    {
        var conversionResult = ConversionResultProvider.ConvertTo(originalValue, listTypeArgument, contractResolver);

        if (!conversionResult.CanBeConverted)
        {
            convertedValue = null;
            errorMessage   = Resources.FormatInvalidValueForProperty(originalValue);
            return(false);
        }

        convertedValue = conversionResult.ConvertedInstance;
        errorMessage   = null;
        return(true);
    }