public void SerializeInterfaceTest() { IUnionSample foo = new FooClass { XYZ = 9999 }; var bytes = JsonSerializer.Serialize(foo); // IUnionSample Assert.Throws <InvalidOperationException>(() => JsonSerializer.Deserialize <IUnionSample>(bytes)); var newFoo = JsonSerializer.Deserialize <FooClass>(bytes); Assert.NotNull(newFoo); Assert.IsType <FooClass>(newFoo); // 已出错,XYZ按正常逻辑应为9999 Assert.Equal(0, newFoo.XYZ); bytes = Utf8JsonMessageFormatter.DefaultInstance.Serialize(foo); newFoo = Utf8JsonMessageFormatter.DefaultInstance.Deserialize <FooClass>(bytes); Assert.Equal(9999, newFoo.XYZ); bytes = Utf8JsonMessageFormatter.DefaultInstance.SerializeObject(foo); newFoo = (FooClass)Utf8JsonMessageFormatter.DefaultInstance.Deserialize(typeof(FooClass), bytes); Assert.Equal(9999, newFoo.XYZ); newFoo = (FooClass)Utf8JsonMessageFormatter.DefaultInstance.Deserialize <IUnionSample>(typeof(FooClass), bytes); Assert.Equal(9999, newFoo.XYZ); Assert.Throws <InvalidOperationException>(() => Utf8JsonStandardResolver.Register(ImmutableCollectionResolver.Instance)); }
static Utf8JsonTests() { Utf8JsonStandardResolver.TryRegister(ImmutableCollectionResolver.Instance); }