diff --git a/src/iSynaptic.Core.Serialization/ResultJsonConverter.cs b/src/iSynaptic.Core.Serialization/ResultJsonConverter.cs index 0f3d3c9..7946850 100644 --- a/src/iSynaptic.Core.Serialization/ResultJsonConverter.cs +++ b/src/iSynaptic.Core.Serialization/ResultJsonConverter.cs @@ -66,7 +66,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist { Type[] typeArguments = objectType.GetGenericArguments(); - Type valueType = typeArguments[1]; + Type valueType = typeArguments[0]; Type observationType = typeArguments[1]; Type arrayType = observationType.MakeArrayType(); diff --git a/src/iSynaptic.Core.UnitTests/Serialization/ResultJsonConverterTests.cs b/src/iSynaptic.Core.UnitTests/Serialization/ResultJsonConverterTests.cs index 2a3cd4d..8bcf091 100644 --- a/src/iSynaptic.Core.UnitTests/Serialization/ResultJsonConverterTests.cs +++ b/src/iSynaptic.Core.UnitTests/Serialization/ResultJsonConverterTests.cs @@ -26,6 +26,7 @@ using NUnit.Framework; using Newtonsoft.Json; using iSynaptic.Commons; +using iSynaptic.TestDomain; namespace iSynaptic.Serialization { @@ -273,5 +274,18 @@ public void ReadJson_FailureWithValueAndObservations_WritesCorrectly() result.WasSuccessful.Should().BeFalse(); result.Observations.Should().Contain("Something bad happened!", "Really bad!"); } + + [Test] + public void ReadJson_ValueTypeIsNeededToDeserialize_ReadsCorrectly() + { + var id = Guid.NewGuid(); + var input = "{\"value\":{\"$type\":\"ServiceCaseId\",\"Value\":\"" + id + "\"},\"wasSuccessful\":true}"; + + var result = _serializer.Deserialize>(input); + + result.Value.Should().BeOfType(); + result.Cast().Value.Should().Be(new ServiceCaseId(id)); + result.Observations.Should().BeEmpty(); + } } }