У меня есть мастер-класс, который содержит общую коллекцию. Элементы в коллекции имеют разные типы, и каждый реализует интерфейс.
Мастер-класс:
public class MasterClass
{
public ICollection<IElement> ElementCollection { get; set; }
}
Контракт для элементов:
public interface IElement
{
string Key { get; set; }
}
Два образца дляэлементы:
public class ElementA : IElement
{
public string Key { get; set; }
public string AValue { get; set; }
}
public class ElementB : IElement
{
public string Key { get; set; }
public string BValue { get; set; }
}
Мне нужно сериализовать экземпляр объекта MasterClass
, используя новую библиотеку System.Text.Json
в Json. Используя следующий код,
public string Serialize(MasterClass masterClass)
{
var options = new JsonSerializerOptions
{
WriteIndented = true,
};
return JsonSerializer.Serialize(masterClass, options);
}
я получаю следующий JSON:
{
"ElementCollection":
[
{
"Key": "myElementAKey1"
},
{
"Key": "myElementAKey2"
},
{
"Key": "myElementBKey1"
}
]
}
вместо:
{
"ElementCollection":
[
{
"Key": "myElementAKey1",
"AValue": "MyValueA-1"
},
{
"Key": "myElementAKey2",
"AValue": "MyValueA-2"
},
{
"Key": "myElementBKey1",
"AValue": "MyValueB-1"
}
]
}
Какой класс (конвертер, писатель, .. .) я должен реализовать для получения полного JSON?
Заранее спасибо за вашу помощь.