Swashbuckle 复杂对象成员装饰

Swashbuckle complex objects members decoration

我无法找到如何在 .NET Core WebAPI 项目中使用 Swashbuckle.AspNetCore(可通过 nuGet 包管理器获得最新版本)来标记我用作操作参数的复杂对象的必需成员。

我已经实现了一个自定义 IOperationFilter,它为操作参数添加了一个 required = true 标志,但显然它没有通过复杂对象定义,所以它们的所有成员仍然被标记为可选。

我想得到的是:

definitions:   
  ComplexObjectParameters:
    description: 'my complex object parameter'
    type: object
    required: ['parameter1', 'parameter2']
    properties:
      parameter1:
        type: string
      parameter2:
        type: string
      parameter3:
        type: string

你知道我该如何实现吗?

编辑:此处提供演示我的问题的演示项目:https://github.com/albator1932/ComplexObjects

使用 IDocumentFilter 并将 [Required] 添加到必填字段:

internal class AddComplexObjectRequiredParameter : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
        if (swaggerDoc.Definitions != null)
        {
            if (swaggerDoc.Definitions["ComplexObjectParameters"].Required == null)
                swaggerDoc.Definitions["ComplexObjectParameters"].Required = new List<string>();
            foreach (var field in typeof(ComplexObjectParameters).GetFields())
            {
                if (Attribute.IsDefined(field, typeof(RequiredAttribute)))
                    swaggerDoc.Definitions["ComplexObjectParameters"].Required.Add(field.Name);
            }
        }
    }
}