在 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)