这个问题我已经有一段时间了,我还没有在 Microsoft 的文档或 StackOverflow 上看到解决方案。
问题:我有一个抽象类,锻炼:
public abstract class Workout
{
public WorkoutType Type { get; set; }
public List<Measurement> Measurements { get; set; } = new();
// Id's and stuff
}
我有几个继承自Workout的子类,两个例子:
跑步锻炼
public class RunningWorkout : Workout
{
public double PersonalBest { get; set; }
}
和WeightWorkout
public class WeightWorkout : Workout
{
public int PersonalBest { get; set; }
}
现在,我想要一个 API 端点,我可以在其中获取用户的所有锻炼。但是,我只能设法获取基类中的字段。我尝试了多种方法来获取子类的所有子字段,但无济于事。 “从派生类型继承”不起作用,因为 PersonalBest 字段不是实体而是原始类型。
关于如何获得包含所有子属性的所有锻炼列表的任何想法?
CodeCaster 在评论中链接到“How to serialize properties of derived classes with System.Text.Json”,其中表示您可以添加
[JsonDerivedType(typeof(YourDerivedClassHere))]
在所有派生类型的抽象类之上。
这会序列化派生类的所有子属性,在我的例子中,当在 API 端点使用 aspnetcore 时。这并不能使您可以在运行时访问所有派生的子属性,但由于这不是我的问题,我将其标记为已解决。