c# - 客户端从 swagger 规范 API 网络核心生成代码的抽象类
问题描述
我的 api 上的错误基类有问题。我使用这个选项来查看它在文档上的工作。但是当我使用 swagger json 在https://editor.swagger.io上生成 Rest Code 时,它会生成 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 内容并且类上的鉴别器为空(我不知道为什么)
我怎样才能解决这个问题?谢谢你!
解决方案
属性的第二个参数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>
{
推荐阅读
- linux - 如何在作为电子邮件附件发送之前检查文件是否可用
- visual-studio - 如何在 Visual Studio 2017 中显示调用堆栈窗口
- elasticsearch - DSL python中的Elasticsearch嵌套字段不存在查询
- php - PHP PDO 准备语句,使用列 SET 的变量
- vb.net - 使用 VB.NET 从 SharePoint Online 列表中获取数据
- import - OSX10.11.6 上 Jupyter Notebook 中 GeoPandas 的导入错误
- reactjs - 如何使用 Jest 和 react-testing-library 测试 react-dropzone?
- python - 这个 XML 可以解析吗?
- mysql - 内存满后MySql自动重启
- django - 如何使用 django 使 celery beat 任务适用于所有对象,而不仅仅是单个对象?