Support polymorphic value-type converters and add validation on values returned by...
authordevsko <devsko@users.noreply.github.com>
Tue, 25 Aug 2020 23:39:57 +0000 (01:39 +0200)
committerGitHub <noreply@github.com>
Tue, 25 Aug 2020 23:39:57 +0000 (16:39 -0700)
commitc08be254963194f023c2e76867093a300ff713fe
tree4189ea350b03c7b643ffacccfbe03e466f75af22
parent0546bd55c24618846d487d1315cf1d8f47dad4de
Support polymorphic value-type converters and add validation on values returned by custom converters (#40914)

* IL emit Box/Unbox in member access

* Test case for object converter

* Test case for class with primitive members and object converter

* Address feedback

* Fixed issues with JsonConverter<object>and nullable value-types

* Address feedback

* Fix test for .NETStandard version

* Fix #41146

* Accidentally commited the local test hack

* Throw JsonException when a deserialized value cannot be assigned to the property/field

* Fix merge

* Fix merge again

* Undo Fix #41146

* Consolidate nullable annotations

* Addressed feedback

* Addressed feedback
17 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/Converters/Value/NullableConverterFactory.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonConverterOfT.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfoOfT.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ReflectionEmitMemberAccessor.cs
src/libraries/System.Text.Json/src/System/Text/Json/ThrowHelper.Serialization.cs
src/libraries/System.Text.Json/src/System/Text/Json/TypeExtensions.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/AssertHelper.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/JsonPropertyTests.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests/CustomConverterTests.InvalidCast.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests/CustomConverterTests.Object.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests/CustomConverterTests.ValueTypedMember.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/Serialization/ExtensionDataTests.cs
src/libraries/System.Text.Json/tests/Serialization/TestClasses/TestClasses.ValueTypedMember.cs [new file with mode: 0644]
src/libraries/System.Text.Json/tests/System.Text.Json.Tests.csproj