我的api错误基类有问题。我使用了this选项来查看它在文档中的工作。但是,当我使用swagger json在https://editor.swagger.io上生成Rest Code时,它将生成3个类BaseException(抽象),Error和Warning。当我使用相应的代码时,响应中会列出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内容,并且类的鉴别符为空(我不知道为什么)
我该如何解决? 谢谢!
答案 0 :(得分:0)
JsonConverter
属性的第二个参数应该是discriminator字段,在您的JSON示例中,它应该是severity
,因此BaseException
类应该这样定义:
[DataContract]
[JsonConverter(typeof(JsonSubtypes), "severity")]
[JsonSubtypes.KnownSubType(typeof(ErrorData), "Error")]
[JsonSubtypes.KnownSubType(typeof(WarningData), "Warning")]
public abstract class BaseException : IEquatable<BaseException>
{