diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index d746cf13..47f1f809 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -224,6 +224,34 @@ namespace Newtonsoft.Json.Tests.Serialization }", strJsonMainClass); } + [Test] + public void DeserializeGenericIEnumerableWithImplicitConversion() + { + string deserialized = @"{ + ""Enumerable"": [ ""abc"", ""def"" ] +}"; + var enumerableClass = JsonConvert.DeserializeObject(deserialized); + var enumerableObject = enumerableClass.Enumerable.ToArray(); + Assert.AreEqual(2, enumerableObject.Length); + Assert.AreEqual("abc", enumerableObject[0].Value); + Assert.AreEqual("def", enumerableObject[1].Value); + } + + public class GenericIEnumerableWithImplicitConversion + { + public IEnumerable Enumerable { get; set; } + } + + public class ClassWithImplicitOperator + { + public string Value { get; set; } + + public static implicit operator ClassWithImplicitOperator(string value) + { + return new ClassWithImplicitOperator() { Value = value }; + } + } + #if !(PORTABLE || PORTABLE40 || NET20 || NET35) [Test] public void LargeIntegerAsString()