Как применить ISchemaFilter к определенному типу без аннотирования типа? - PullRequest
0 голосов
/ 31 января 2019

Мы реструктурируем наши API и перемещаем наши классы моделей в отдельный проект, чтобы его можно было использовать в других компонентах.

Поэтому наш класс Product был аннотирован, как показано ниже

[SwaggerSchemaFilter(typeof(ProductSchemaFilter))]
public class Product
{
}

Поскольку мы переместили эту модель в другой проект и, следовательно, dll нам пришлось удалить атрибут.

В методе apply класса ProductSchemaFilter мы установили свойство примера схемы для сложного объекта, корневым объектом которого является Product..

public class ProductSchemaFilter : ISchemaFilter
{
    public void Apply(Swashbuckle.AspNetCore.Swagger.Schema schema, SchemaFilterContext context)
    {
        schema.Example = ProductExample.GetValidProduct("55dwf");
    }
}

С удаленным атрибутом из класса Product я попытался добавить фильтр при запуске

services.AddSwaggerGen(c =>
{
    c.SchemaFilter<ProductSchemaFilter>();
});

, но я не получил желаемых результатов.Созданный документ swagger имеет пример набора для каждого свойства во всех моделях.Это не то, что я хочу.Как мне настроить его только для модели Продукта.

С уважением,

...