Мы находимся в процессе миграции приложения с. NET Core 2.1 на 3.1, для которого нам необходимо также обновить swagger с 4.X до 5.X . С помощью swagger 4.x мы смогли удалить некоторые свойства, помеченные атрибутом speci c, например:
public class SwaggerIgnoreFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
var allTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(i => i.GetTypes()).ToList();
foreach (var definition in swaggerDoc?.Definitions)
{
var type = allTypes.FirstOrDefault(x => x.Name == definition.Key);
if (type != null)
{
var properties = type.GetProperties();
foreach (var prop in properties.ToList())
{
var ignoreAttribute = prop.GetCustomAttribute(typeof(SwaggerIgnoreAttribute), false);
if (ignoreAttribute != null)
{
definition.Value.Properties.Remove(prop.Name);
}
}
}
}
}
}
Проблема в том, что в swagger 5.0 изменился IDocumentFilter и у нас есть OpenApiDocument вместо SwaggerDocument, который забрал свойство Definitions , и мы не можем понять, как скрыть определенные свойства от страниц сваггера. Любая помощь / предложение / ссылка была бы отличной. Спасибо.