Наследование и дискриминатор в базовом классе

У меня есть операция класса:

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#.

Другие вопросы по тегам