[英]Inheritance and discriminator in base class
I have class operation: 我有上课作业:
public class Operation
{
public string Type { get; set; }
public OperationOptions Options { get; set; }
}
Where value of Type
defines type of Options
. 其中Type
值定义Options
的Type
。 But I have to add discriminator
to OperationOptions
type 但是我必须将discriminator
OperationOptions
添加到OperationOptions
类型
[KnownType(typeof(EchoOptions))]
[KnownType(typeof(VetDocumentAcceptanceOptions))]
[JsonConverter(typeof(JsonInheritanceConverter), "discriminator")]
public class OperationOptions
{
}
public class EchoOptions : OperationOptions
{
}
public class VetDocumentAcceptanceOptions : OperationOptions
{
}
So I get in swagger.json: 所以我进入swagger.json:
"OperationOptions": {
"type": "object",
"discriminator": {
"propertyName": "discriminator",
"mapping": {
"EchoOptions": "#/components/schemas/EchoOptions",
"VetDocumentAcceptanceOptions": "#/components/schemas/VetDocumentAcceptanceOptions"
}
}
But I don't have property Discriminator
in OperationOptions
in my model. 但是我的模型在OperationOptions
中没有属性Discriminator
。
Is there any way to use Type
in Operation
as discriminator for OperationOptions
? 有什么方法可以将Operation
Type
用作Operation
区分OperationOptions
?
The JsonInheritanceConverter
will automatically add the discriminator
property to the serialized JSON and use this property when deserializing JSON to a type to select the correct type. JsonInheritanceConverter
会自动将discriminator
属性添加到序列化的JSON,并在将JSON反序列化为一种类型以选择正确的类型时使用此属性。 It's better to actually not see the property as a C# property. 最好不要将该属性视为C#属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.