CSharp · Console
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.Json;
using System.Text.Json.Serialization;
using NUnit.Framework; // Throws NUnit.Framework.AssertionException
//https://stackoverflow.com/questions/66495660/net-5-0-signature-change-of-system-text-json-jsonserializer-deserialize
class ClassA
{
public string[] ArrayOfString { get; set; }
}
class ClassB : BaseClass
{
public string[] ArrayOfString
{
get => new string[] { base.SingularString };
set
{
if((value != null) && (value.Length == 1))
{
base.SingularString = value[0];
}
}
}
}
class BaseClass
{
public string SingularString { get; set; } = "Hello World";
}
class TestClass
{
public static void Test()
{
var classA = new ClassA { ArrayOfString = new [] { "Hello World" } };
var json = JsonSerializer.Serialize(classA);
Console.WriteLine(json);
var classA2 = JsonSerializer.Deserialize<ClassA>(json);
classA2.Dump();
var classB = JsonSerializer.Deserialize<ClassB>(json);
classB.Dump();
Assert.That(classA.ArrayOfString.SequenceEqual(classB.ArrayOfString));
}
}
public class Program
{
public static void Main()
{
Console.WriteLine("Environment version: {0} ({1}), {2}", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("System.Text.Json version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine();
try
{
TestClass.Test();
}
catch (Exception ex)
{
Console.WriteLine("Failed with unhandled exception: ");
Console.WriteLine(ex);
throw;
}
}
}