忽略Swagger UI的属性

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

我正在尝试忽略swagger UI的属性。基于此article,我实现了一个过滤器并尝试了

[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class SwaggerExcludeAttribute : Attribute
{
}

public class SwaggerExcludeFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (schema?.Properties == null || context == null) return;
        var excludedProperties = context.Type.GetProperties()
            .Where(t => t.GetCustomAttribute(typeof(SwaggerExcludeAttribute), true) != null);
        foreach (var excludedProperty in excludedProperties)
        {
            if (schema.Properties.ContainsKey(excludedProperty.Name))
                schema.Properties.Remove(excludedProperty.Name);
        }
    }
}
  1. 自定义属性似乎不能正确地通过反射excludedProperties始终为空。
  2. [context.MemberInfo确实读取了属性,但由于那里没有属性而无法从schema.Properties中删除

我的样本模型就像

public class SequenceSetupListModel
{
    public int Id { get; set; }
    public int Sequence { get; set; }
    public string Role { get; set; }
    public string User { get; set; }
    [SwaggerExclude]
    public IList<Sequence> SequenceLists { get; set; }
}

我在这里缺少的内容

问候

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

您实际上不需要为请求模型定义自己的属性。如果您使用的是Json.NET,则使用[JsonIgnore]

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