Add support for more collections (dotnet/corefx#38319)
authorLayomi Akinrinade <laakinri@microsoft.com>
Sat, 15 Jun 2019 23:49:03 +0000 (19:49 -0400)
committerGitHub <noreply@github.com>
Sat, 15 Jun 2019 23:49:03 +0000 (19:49 -0400)
commit8de859a12ce2a5020e984ffef5f80756b216e528
tree9be0d4ab4479102ef8c0613f3f40424d9b66ab24
parent1277f6c3342336b1f4c53516ee12627ac5096bd4
Add support for more collections (dotnet/corefx#38319)

* Add support for ISet

* Add support for IEnumerable, IList, and ICollection (non-generic)

* Add support for non-generic IDictionary

* Address review feedback

* Remove unused exception resource and remove ISet<ISet<T>> (de)serialization limitation

* Add support for non-generic collections that have a constructor that takes an IEnumerable or IDictionary

* Condense branches for types we need to set runtime types for

*  Add support for non-generic collections that have a constructor that takes an IList

* Add support for Hashtable and SortedList

* Verify sorted dictionary works

* Add support for KeyValuePair

* Create concrete instance of types Foo where possible

* Use generic constructor for KeyValuePair

* Fix KeyValuePair creation in tests

Commit migrated from https://github.com/dotnet/corefx/commit/4aece7a121a164e68954d79a0ec2569bd71cf125
48 files changed:
src/libraries/System.Text.Json/src/Resources/Strings.resx
src/libraries/System.Text.Json/src/System.Text.Json.csproj
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ClassType.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultEnumerableConverter.cs [deleted file]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultICollectionConverter.cs [moved from src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultIEnumerableConstructibleConverter.cs with 77% similarity]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultIDictionaryConverter.cs [new file with mode: 0644]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultImmutableDictionaryConverter.cs [new file with mode: 0644]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultImmutableEnumerableConverter.cs [moved from src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/DefaultImmutableConverter.cs with 53% similarity]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/DefaultIDictionaryConverter.cs [new file with mode: 0644]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonClassInfo.AddProperty.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonClassInfo.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonDictionaryConverter.cs [new file with mode: 0644]
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonEnumerableConverter.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfo.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfoCommon.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfoNotNullable.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.HandleArray.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.HandleDictionary.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.HandleNull.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.HandleObject.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.HandlePropertyName.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleDictionary.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleEnumerable.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleObject.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ReadStackFrame.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ReflectionEmitMaterializer.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ReflectionMaterializer.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/WriteStack.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/WriteStackFrame.cs
src/libraries/System.Text.Json/src/System/Text/Json/ThrowHelper.Serialization.cs
src/libraries/System.Text.Json/tests/Serialization/Array.ReadTests.cs
src/libraries/System.Text.Json/tests/Serialization/DictionaryTests.cs
src/libraries/System.Text.Json/tests/Serialization/Object.ReadTests.cs
src/libraries/System.Text.Json/tests/Serialization/PolymorphicTests.cs
src/libraries/System.Text.Json/tests/Serialization/TestClasses.Polymorphic.cs
src/libraries/System.Text.Json/tests/Serialization/TestClasses.SimpleTestClass.cs
src/libraries/System.Text.Json/tests/Serialization/TestClasses.SimpleTestClassWithObject.cs
src/libraries/System.Text.Json/tests/Serialization/TestClasses.SimpleTestStruct.cs
src/libraries/System.Text.Json/tests/Serialization/TestClasses.cs
src/libraries/System.Text.Json/tests/Serialization/TestData.cs
src/libraries/System.Text.Json/tests/Serialization/Value.ReadTests.GenericCollections.cs
src/libraries/System.Text.Json/tests/Serialization/Value.ReadTests.NonGenericCollections.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/Serialization/Value.WriteTests.GenericCollections.cs
src/libraries/System.Text.Json/tests/Serialization/Value.WriteTests.NonGenericCollections.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/System.Text.Json.Tests.csproj