如何解决使用生成的C#客户端在.NET Core 3.1 API中进行基本和子类型序列化
我们希望有一个具有Input
属性的基本类型,例如Value
,然后有一个TextInput
属性,另外还有一个Placeholder
属性。下一个子类型可以是NumberInput
,例如,它可以具有MaxLength
属性...为了使用Swagger设置继承并使用生成的客户端来继承它,我们在{{1}之后进行了操作}:
services.AddControllers.()
稍后:
.AddNewtonsoftJson(options =>
options.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All)
目前在模型本身上没有注释...在基础 services.AddSwaggerGen(
options =>
{
options.IncludeXmlComments(XmlCommentsFilePath);
options.EnableAnnotations(true);
options.UseAllOfForInheritance();
options.UseOneOfForPolymorphism();
//even tried that
options.SelectDiscriminatorNameUsing((baseType) => "Input");
options.SelectDiscriminatorValueUsing((subType) => subType.Name);
类定义中使用此注释进行了尝试:
Input
但是,老实说,我不确定该如何处理判别器...它将“类型”自动添加为属性。
调用API响应很好,但问题是生成的C#客户端无法反序列化...返回的属性以其名称的前缀为[SwaggerSubTypes(new Type[] { typeof(TextInput),typeof(NumberInput)},Discriminator="Type")]
并且没有任何值...架构看起来不错...
有人知道如何通过API和生成的C#客户端简单实现基本类型和子类型吗?我似乎无法完全理解它并使它起作用...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。