如何在不注释类型的情况下将ISchemaFilter应用于特定类型?

时间:2019-01-31 15:57:53

标签: c# .net-core swashbuckle

我们正在重组api,并将模型类移到一个单独的项目中,以便可以在其他组件中使用。

因此我们的Product类的注释如下所示

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

由于我们已将此模型移至另一个项目,因此dll也必须删除该属性。

在我们申请的架构示例属性设置为与根对象为产品一个复杂的对象的类ProductSchemaFilter方法。

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文档为所有模型上的每个属性设置了一个示例集。这不是我想要的。如何定位它只是为产品型号。

亲切的问候

0 个答案:

没有答案