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; } } }
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); }
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); } }
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); } }
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); }