From b7c16ee6efdec7f2ffe15026b0b3b5699338bd38 Mon Sep 17 00:00:00 2001 From: Jeroen Breuer Date: Tue, 29 Jul 2014 16:24:14 +0200 Subject: [PATCH 1/2] Fix for #185 --- .../Umbraco.Archetype/Models/ArchetypePropertyModel.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index 4d9abb4..f9a13e2 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -67,7 +67,7 @@ namespace Archetype.Models foreach (var converter in converters.Where(x => x.IsConverter(properyType))) { // Convert the type using a found value converter - var value2 = converter.ConvertDataToSource(properyType, value, false); + var value2 = converter.ConvertSourceToObject(properyType, value, false); // If the value is of type T, just return it if (value2 is T) @@ -82,4 +82,4 @@ namespace Archetype.Models return Attempt.Fail(); } } -} \ No newline at end of file +} From 07750c75371d04dc00efa28c77f6c18c89f43b7e Mon Sep 17 00:00:00 2001 From: Jeroen Breuer Date: Tue, 5 Aug 2014 13:17:34 +0200 Subject: [PATCH 2/2] Run ConvertDataToSource before ConvertSourceToObject --- .../Umbraco.Archetype/Models/ArchetypePropertyModel.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index f9a13e2..5b1b358 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -67,12 +67,19 @@ namespace Archetype.Models foreach (var converter in converters.Where(x => x.IsConverter(properyType))) { // Convert the type using a found value converter - var value2 = converter.ConvertSourceToObject(properyType, value, false); + var value2 = converter.ConvertDataToSource(properyType, value, false); // If the value is of type T, just return it if (value2 is T) return Attempt.Succeed((T)value2); + // If ConvertDataToSource failed try ConvertSourceToObject. + var value3 = converter.ConvertSourceToObject(properyType, value, false); + + // If the value is of type T, just return it + if (value3 is T) + return Attempt.Succeed((T)value3); + // Value is not final value type, so try a regular type conversion aswell var convertAttempt = value2.TryConvertTo(); if (convertAttempt.Success)