相关疑难解决方法(0)

将 ISchemaFilter 示例转换为 Swashbuckle 5.0

在 Swashbuckle 5 之前,可以定义和注册一个ISchemaFilter可以提供模型的示例实现:

public class MyModelExampleSchemaFilter : ISchemaFilter
{
    public void Apply(Schema schema, SchemaFilterContext context)
    {
        if (context.SystemType.IsAssignableFrom(typeof(MyModel)))
        {
            schema.Example = new MyModel
            {
                Name = "model name",
                value = 42
            };
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所述Schema.Example将采取的任意对象,并且生成的OpenAPI模式时它会适当地串行化。

但是,随着迁移到 .NET Core 3 和 Swashbuckle 5,该Schema.Example属性不再是 anobject并且需要类型Microsoft.OpenApi.Any.IOpenApiAny。似乎没有关于如何提供新示例的文件记录路径。

我已经尝试基于查看 中的代码Microsoft.OpenApi来构建我自己的 an 实现,IOpenApiAny但是任何尝试使用它来生成示例的尝试都Microsoft.OpenApi.Writers.OpenApiWriterAnyExtensions.WriteObject(IOpenApiWriter writer, OpenApiObject entity)Write调用其方法之前从内部失败。我并不声称下面的代码是完全正确的,但我希望它至少能照亮一条路径以及如何前进。

/// <summary>
///     A class that recursively adapts a unidirectional …
Run Code Online (Sandbox Code Playgroud)

c# swashbuckle openapi asp.net-core-3.0 .net-core-3.0

7
推荐指数
1
解决办法
1761
查看次数