У меня есть мастер-класс, который содержит общую коллекцию. Элементы в коллекции имеют разные типы, и каждый реализует интерфейс.
Мастер класс:
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?
Заранее спасибо за помощь.