diff --git a/src/JsonApiDotNetCore/Internal/TypeHelper.cs b/src/JsonApiDotNetCore/Internal/TypeHelper.cs index 60574ff295..ca382c10d6 100644 --- a/src/JsonApiDotNetCore/Internal/TypeHelper.cs +++ b/src/JsonApiDotNetCore/Internal/TypeHelper.cs @@ -22,6 +22,9 @@ public static object ConvertType(object value, Type type) if (type == typeof(DateTimeOffset)) return DateTimeOffset.Parse(stringValue); + if (type.GetTypeInfo().IsEnum) + return Enum.Parse(type, stringValue); + return Convert.ChangeType(stringValue, type); } catch (Exception e) diff --git a/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj b/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj index 699a20076b..01b1879e83 100755 --- a/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj +++ b/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj @@ -1,6 +1,6 @@  - 2.0.8 + 2.0.9 netstandard1.6 JsonApiDotNetCore JsonApiDotNetCore @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/test/UnitTests/Internal/TypeHelper_Tests.cs b/test/UnitTests/Internal/TypeHelper_Tests.cs index 7f05edd892..1e75e705d2 100644 --- a/test/UnitTests/Internal/TypeHelper_Tests.cs +++ b/test/UnitTests/Internal/TypeHelper_Tests.cs @@ -30,5 +30,23 @@ public void Bad_DateTimeOffset_String_Throws() // assert Assert.Throws(() => TypeHelper.ConvertType(formattedString, typeof(DateTimeOffset))); } + + [Fact] + public void Can_Convert_Enums() + { + // arrange + var formattedString = "1"; + + // act + var result = TypeHelper.ConvertType(formattedString, typeof(TestEnum)); + + // assert + Assert.Equal(TestEnum.Test, result); + } + + public enum TestEnum + { + Test = 1 + } } }