如何从 SwaggerResponse 模型中隐藏/排除属性?不是请求而是响应

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

以下是需要从 SwaggerResponseModel 中排除 VersionRange 属性的类:

public class Dependency
{       
    public string Name { get; set; }        

    [JsonConverter(typeof(VersionRangeConverter))]
    [SwaggerExclude]       
    public VersionRange VersionRange { get; set; }
}

我尝试使用 Attribute 和 ISchemaFilter 从 SwaggerResponse 模型中排除属性,但没有成功。

 public class SwaggerExcludeFilter : ISchemaFilter
    {
        public void Apply(OpenApiSchema schema, SchemaFilterContext context)
        {
            if (schema?.Properties == null)
            {
                return;
            }

            var properties = context?.Type?.GetProperties().Where(x => x.GetCustomAttribute<SwaggerExcludeAttribute>() != null);

            foreach (PropertyInfo prop in properties ?? Enumerable.Empty<PropertyInfo>())
            {
                if (schema.Properties.ContainsKey(prop.Name))
                {
                    schema.Properties.Remove(prop.Name);
                }
            }
        }
    }

我不想按照我的意愿使用受保护的内部访问说明符 序列化和反序列化期间要考虑的属性。


[System.Text.Json.Serialization.JsonIgnore] 属性没有 也有效果。

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

您尝试过

[OpenApiIgnore]
属性吗?

using NSwag.Annotations;

public class SomeViewModel
{
    [OpenApiIgnore]
    public string? PropertyToExclude { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.