是否可以为ASP.NET CORE(C#)自定义生成Swagger文档?具体来说,它似乎正在改变我的模型中显示的顺序属性(即它首先放置派生类属性)。
class BaseObj
{
string Username {get;set;}
string Password {get;set;}
}
class Obj2 : BaseObj
{
string SomeotherProp {get;set;}
}
Swagger生成:
SomeotherProp
Username
Password
我希望SomeotherProp
位于底部。我尝试使用Display(Order = 1)属性,但Swagger忽略了这一点。我没有在配置中看到任何可以自定义排序的钩子。
答案 0 :(得分:1)
经过大量的研究和反复试验,我偶然发现了答案。 Swagger实际上并不直接反映您的类型,而是使用Json.Net来获取类型模式。 Json.Net尊重JsonProperty属性。所以,在我的基类型上,我可以在属性上设置JsonProperty = -2以使它们首先显示。请注意,您必须使用-2而不是-1,因为这是保留的。通过使用-2,您不必在所有派生类型上设置JsonProperty。
这将适用于我的情况,但我找到了另一篇文章,其中该人定义了一个自定义合同解析器并对其中的属性进行了排序......这将比JsonProperty更通用,更清晰。需要弄清楚如何将其挂钩到Asp.net核心。
但无论如何,重点是,时髦的排序来自Json.net,而不是Swagger。