使用列表

时间:2017-08-24 09:39:19

标签: c# asp.net-web-api swagger swashbuckle

我已经按照this教程设置了Swashbuckle的自定义swagger请求示例,用于Swagger帮助页面。

当API将单个对象作为主参数时,它可以正常工作,但是当使用列表时,我得到一个"对象未设置为对象的实例"例外

这是一个代码示例

using Swashbuckle.Examples;

[HttpPost]
[SwaggerRequestExample(typeof(List<TestModel>), typeof(TestExample))]     
public IHttpActionResult ListTest([FromBody] List<TestModel> tests)
{
    return Ok(tests);
}

public class TestExample : IExamplesProvider
{
    public object GetExamples()
    {
        return new List<TestModel>() {
            new TestModel()
            {
                Id = 1,
                Text = "First object"
            },
            new TestModel()
            {
                Id = 2,
                Text = "Second object"
            },
        };
    }
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

使用@HelderSepu建议使用ApplySchemaVendorExtensions,这就是我做的工作:

在我的SwaggerConfig.cs

c.SchemaFilter<ApplySchemaVendorExtensions>();

ApplySchemaVendorExtensions.cs

using Swashbuckle.Swagger;    
public class ApplySchemaVendorExtensions : ISchemaFilter
{
    public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type)
    {
        if (schema.properties != null)
        {
            if (type == typeof(TestModel))
            {
                schema.example = new TestModel()
                {
                    Id = 1,
                    Text = "Custom text value"
                };
            }
        }
    }
}

如果有人有更好的解决方案,我不会将其标记为答案。