Код: Выделить всё
public enum TypeAModels
{
A = 1,
B = 2
}
public abstract class TypeA
{
public abstract TypeAModels TypeAModels { get; }
}
public class TypeA_A : TypeA
{
public int Age { get; set; }
public TypeB TypeB { get; set; }
public override TypeAModels TypeAModels => TypeAModels.A;
}
public class TypeA_B : TypeA
{
public string Name { get; set; }
public override TypeAModels TypeAModels => TypeAModels.B;
}
public enum TypeBModels
{
A = 1,
B = 2
}
public abstract class TypeB
{
public abstract TypeBModels TypeBModels { get; }
}
public class TypeB_A : TypeB
{
public int Year { get; set; }
public override TypeBModels TypeBModels => TypeBModels.A;
}
public class TypeB_B : TypeB
{
public string UserName { get; set; }
public override TypeBModels TypeBModels => TypeBModels.B;
}
Код: Выделить всё
var typeAA = new TypeA_A() { Age = 30, TypeB = new TypeB_A { Year = 1982 } };
var jsonString = JsonSerializer.Serialize(typeAA, new JsonSerializerOptions());
var deserializedTypeAA = JsonSerializer.Deserialize(jsonString, new JsonSerializerOptions());
Я понимаю, что у меня проблема с вложенным полем TypeA_A TypeB, но я не могу найти способ десериализации такого поля. объект, которому нужен сам преобразователь как TypeA, но также нужен еще один преобразователь для его внутреннего поля TypeB.
Единственный способ, который я могу придумать, - это прочитать каждое поле вручную отдельно.
Есть ли более элегантный способ?
Подробнее здесь: https://stackoverflow.com/questions/788 ... hic-object
Мобильная версия