有一个抽象类的对象列表。我无法更改此类本身,因为它属于 Nuget 的包。该类有 10 个属性。
我想序列化此列表,例如使用JsonSerializer
字符串,但保存具有 10 个属性中的 3 个属性的对象。
我知道我可以通过使用某种迷你类创建一个列表来迭代这个列表,然后将其序列化。
还有更优雅的选择吗?
例如(创建 GPT):
public abstract class CarBase
{
public abstract bool IsAvailable { get; }
public virtual bool IsElectric => false;
public bool IsLuxury => !IsAvailable;
public virtual string Manufacturer { get; }
public virtual int Year { get; }
public virtual string Model { get; }
public virtual string Color { get; }
public virtual double EngineSize { get; }
public virtual int NumberOfDoors { get; }
public virtual string VIN { get; }
public abstract string LicensePlate { get; }
}
并序列化,例如仅 3 个属性 Year / Model / Color
我不能忽略这个特定类中的某些属性 - 因为它是第三方库。
这可以通过匿名类型实现。例如,有一个类
例如,您只需获取前 2 个属性。
此外,通过此实现,您可以在分配时重命名属性。
或者创建您自己的数据类型并向其传输值。您甚至可以创建静态方法来转换数据。
对于序列化/反序列化,可以使用库
System.ComponentModel.DataAnnotations
,即属性JsonPropery
来指定Json对象中该属性的名称,或者使用属性JsonIgnore
在序列化过程中忽略该属性