我有一个类 struct ,我可以序列化和反序列化,没有问题.我已经在下面的一个人为设计的例子中展示了它
[JsonDerivedType(typeof(Apple),typeDiscriminator: "apple")]
public abstract class Fruit
{
public Seed seed { get; }
protected Fruit(Seed seed)
{
this.seed = seed;
}
}
public sealed class Apple : Fruit
{
[JsonConstructor]
public Apple(Seed seed) : base(seed) { }
}
public sealed class AppleSeed : Seed
{
[JsonConstructor]
public AppleSeed() {}
}
[JsonDerivedType(typeof(AppleSeed),typeDiscriminator: "apple")]
public abstract class Seed { }
但我希望Apple构造函数要求类型为Applesed:
[JsonConstructor]
public Apple(AppleSeed seed) : base(seed) { }
这可以很好地序列化,但无法反序列化,因为反序列化程序需要基类信息.我试图使用泛型来解决这个问题,但无法解决.有没有一种可靠的方法来使用System.Text.Json来反序列化多态参数,而不实现自定义的反序列化程序?谢谢