代码之家  ›  专栏  ›  技术社区  ›  Backs

基类中的继承和鉴别器

  •  1
  • Backs  · 技术社区  · 6 年前

    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 操作选项 在我的模型里。

    类型 在里面 Operation 操作选项 ?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Rico Suter    6 年前

    这个 JsonInheritanceConverter 将自动添加 discriminator 属性设置为序列化的JSON,并在将JSON反序列化为类型以选择正确的类型时使用此属性。最好不要把房产看成是C房产。