客户端上的抽象类从swagger spec API net core生成代码

问题描述 投票:1回答:1

我的api上的错误基类有问题。我使用this选项来查看它在文档上的工作。但是当我使用swagger json在https://editor.swagger.io上生成Rest代码时,它会生成3个类,BaseException(抽象),错误和警告。当我使用相应的代码时,在我的响应中出现了一个BaseException列表,但总是向我显示基本信息

exceptions:[
    {
      "severity": "Warning",
      "message": "warning message"
    },
    {
      "severity": "Error",
      "message": "testing"
    }
]

如果我把它作为抽象

[DataContract]
    [JsonConverter(typeof(JsonSubtypes), "BaseException")]
    [JsonSubtypes.KnownSubType(typeof(ErrorData), "Error")]
    [JsonSubtypes.KnownSubType(typeof(WarningData), "Warning")]
    public abstract class BaseException : IEquatable<BaseException>
    {

提出了另一个例外:

Could not create an instance of type Api.Test.Client.Model.BaseException. Type is an interface or abstract class and cannot be instantiated. Path 'severity', line 488, position 17. 

我试图维护生成的类结构,但没有运气,因为总是返回BaseException内容,类上的鉴别器是null(我不知道为什么)

我怎样才能解决这个问题?谢谢!

c# asp.net-core swagger apiclient
1个回答
1
投票

JsonConverter属性的第二个参数应该是鉴别器字段,在你的JSON示例中它应该是severity所以BaseException类应该这样定义:

[DataContract]
[JsonConverter(typeof(JsonSubtypes), "severity")]
[JsonSubtypes.KnownSubType(typeof(ErrorData), "Error")]
[JsonSubtypes.KnownSubType(typeof(WarningData), "Warning")]
public abstract class BaseException : IEquatable<BaseException>
{

请参阅以下文档:https://manuc66.github.io/JsonSubTypes/

© www.soinside.com 2019 - 2024. All rights reserved.