基类的继承和区分

时间:2018-11-30 08:17:33

标签: c# swagger nswag

我有课上课:

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的区分符?

1 个答案:

答案 0 :(得分:0)

JsonInheritanceConverter将自动将discriminator属性添加到序列化JSON,并在将JSON反序列化为一种类型以选择正确的类型时使用此属性。最好不要将该属性视为C#属性。