Наследование и дискриминатор в базовом классе
У меня есть операция класса:
public class Operation
{
public string Type { get; set; }
public OperationOptions Options { get; set; }
}
Где значение Type
определяет тип Options
, Но я должен добавить discriminator
в OperationOptions
тип
[KnownType(typeof(EchoOptions))]
[KnownType(typeof(VetDocumentAcceptanceOptions))]
[JsonConverter(typeof(JsonInheritanceConverter), "discriminator")]
public class OperationOptions
{
}
public class EchoOptions : OperationOptions
{
}
public class VetDocumentAcceptanceOptions : OperationOptions
{
}
Так я попадаю в swagger.json:
"OperationOptions": {
"type": "object",
"discriminator": {
"propertyName": "discriminator",
"mapping": {
"EchoOptions": "#/components/schemas/EchoOptions",
"VetDocumentAcceptanceOptions": "#/components/schemas/VetDocumentAcceptanceOptions"
}
}
Но у меня нет собственности Discriminator
в OperationOptions
в моей модели.
Есть ли способ использовать Type
в Operation
как дискриминатор для OperationOptions
?
0 ответов
JsonInheritanceConverter
автоматически добавит discriminator
свойство сериализованного JSON и используйте это свойство при десериализации JSON для типа, чтобы выбрать правильный тип. Лучше на самом деле не видеть свойство как свойство C#.