Как сериализовать производные классы с использованием полиморфизма в JSONC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сериализовать производные классы с использованием полиморфизма в JSON

Сообщение Anonymous »

Если у меня есть следующие классы:

Код: Выделить всё

public class ParentClass
{
public int ParentProperty { get; set; } = 0;
}
public class ChildClass : ParentClass
{
public string ChildProperty { get; set; } = "Child property";
}
public class Container
{
public double ContainerCapacity { get; set; } = 0.2;
public List ClassContainer { get; set; } = new List();
}
И если я затем создам следующие объекты в Program.cs:

Код: Выделить всё

// Objects
var container = new Container() { ContainerCapacity = 3.14 };
var parent = new ParentClass() { ParentProperty = 5 };
var child = new ChildClass() { ParentProperty = 10, ChildProperty = "value" };
container.ClassContainer.Add(parent);
container.ClassContainer.Add(child);

// Serialization
var serializerOptions = new JsonSerializerOptions() { WriteIndented = true };
var containerJson = JsonSerializer.Serialize(container, serializerOptions);
Console.WriteLine(containerJson);
< /code>
ожидаемый вывод: < /p>
{
"ContainerCapacity": 3.14,
"ClassContainer": [
{
"ParentProperty": 5
},
{
"ChildProperty": "value",
"ParentProperty": 10
}
]
}

Фактический результат:

Код: Выделить всё

{
"ContainerCapacity": 3.14,
"ClassContainer": [
{
"ParentProperty": 5
},
{
"ParentProperty": 10
}
]
}
Как убедиться, что свойство ChildProperty дочернего объекта также сериализуется? Как бы я поступил с полиморфизмом интерфейса?


Подробнее здесь: https://stackoverflow.com/questions/647 ... sm-to-json
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»