Я использую Swashbuckle для генерации документации Swagger\UI для проекта webapi2. Наши модели используются совместно с некоторыми устаревшими интерфейсами, поэтому есть несколько свойств, которые я хочу игнорировать в моделях. Я не могу использовать атрибут JsonIgnore, потому что устаревшие интерфейсы также должны сериализоваться в JSON, поэтому я не хочу игнорировать свойства глобально, только в конфигурации Swashbuckle.
Я нашел способ сделать это, документированный здесь:
https://github.com/domaindrivendev/Swashbuckle/issues/73
Но это, кажется, устарело с текущей версией Swashbuckle.
Метод, рекомендуемый для старой версии Swashbuckle, использует реализацию IModelFilter следующим образом:
public class OmitIgnoredProperties : IModelFilter
{
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type)
{
var ignoredProperties = … // use reflection to find any properties on
// type decorated with the ignore attributes
foreach (var prop in ignoredProperties)
model.Properties.Remove(prop.Name);
}
}
SwaggerSpecConfig.Customize(c => c.ModelFilter<OmitIgnoredProperties>());
Но я не уверен, как настроить Swashbuckle для использования IModelFilter в текущей версии? Я использую Swashbuckle 5.5.3.