提问人:Artur Safiullin 提问时间:3/7/2023 最后编辑:Artur Safiullin 更新时间:3/7/2023 访问量:307
多态类型鉴别器在反序列化期间不会转换为枚举
Polymorphic type discriminator is not converted to enum during deserialization
问:
我正在使用枚举字段作为多态序列化/反序列化的类型鉴别器,并遇到了奇怪的行为。作为类型鉴别器的字符串值不会转换为枚举,并设置此枚举的默认值。
这是我的 C# 模型
[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")]
[JsonDerivedType(typeof(FixedPenalty), typeDiscriminator: "fixedPenalty")]
[JsonDerivedType(typeof(FixedRatePenalty), typeDiscriminator: "fixedRatePenalty")]
[JsonDerivedType(typeof(RelativePenalty), typeDiscriminator: "relativePenalty")]
public abstract class Penalty
{
public PenaltyType Type { get; set; }
public string Description { get; set; }
public Penalty(PenaltyType type,
string description)
{
Type = type;
Description = description;
}
}
这是我发送到控制器的 json。
{
"type": "relativePenalty",
"description": "string",
"rate": 10.9,
"unit": "year"
}
如您所见,反序列化工作正常,对象类型正确,但枚举未转换。
有什么方法可以解决这种行为吗?现在我看到了两种解决问题的方法,要么将纯粹用于鉴别器的技术字段添加到 DTO 模型中,这将复制“类型”字段,要么检查类型转换,然后从特定的应用层转换为所需的模型,但我不喜欢这两种方法。
答: 暂无答案
评论
Type