c# - 将 C# 对象转换为 IOpenApiAny
问题描述
我想设置OpenApiSchema.Example
. 这是一个IOpenApiAny
.
我可以将一个简单的 c# 对象转换/转换为现有的IOpenApiAny
,例如。Microsoft.OpenApi.Any.OpenApiObject
? 或者我需要在我的所有对象上实现接口
例子
var schma = new Microsoft.OpenApi.Models.OpenApiSchema
{
Example = new MyObject();//doesn't work, how can i cast it?
};
背景:我正在尝试创建一个 Swashbuckle 过滤器,它将示例添加到请求和响应参数和模式中。我正在使用即将推出的使用 OpenAPI.NET 的 Swashbuckle 5.0(测试版),所以我正在尝试使用它来创建我的过滤器。
解决方案
你的类MyObject
需要实现IOpenApiAny
,如下:
public class MyObject : IOpenApiAny
{
// implement everything here that IOpenApiAny defines:
public AnyType AnyType { get; }
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
{
// implementation
}
}
如果您有很多这样的类,并且您可以为所有这些类提供一个通用实现,那么您可以使用单个抽象基类并让所有具体类都继承自该类:
public abstract class BaseObject : IOpenApiAny
{
// implement everything defined by IOpenApiAny (see above)
}
public class MyClass1 : BaseObject
{
// additional "MyClass1" methods/props
}
public class MyClass2 : BaseObject
{
// additional "MyClass2" methods/props
}
推荐阅读
- python-3.x - 根据python中的单词数进行文本分割
- javascript - 遍历数组以获取对象之间的距离
- react-native - 如何找到可能的未处理承诺拒绝的来源
- angular - 如何扩展现有的角度示意图
- java - 使用 Mockito 对 InputStreamReader 进行 Junit 测试
- c# - 为什么不推荐使用这种“goto”语句?
- kubernetes - 安装 metric-server 时无法完全收集指标
- django - 内联实例的多个查询 Django admin
- javascript - h:inputText 只允许十进制数字
- spring-boot - Spring Boot Websocket 聊天和 RabbitMQ