gpt4 book ai didi

c# - 类型为 T 的派生类的序列化

转载 作者:数据小太阳 更新时间:2023-10-29 02:12:15 27 4
gpt4 key购买 nike

我有以下类需要序列化

public class Boat
{
public string Brand { get; set; }
public string Model { get; set; }
}

以及下面的派生类

public class WindBoat : Boat
{
public int MaxSpeed { get; set }
}

public class SpeedBoat<T> : Boat
{
public int MaxSpeed { get; set; }
public Engine<T> Engine { get; set; }
}

当我尝试序列化 Boat 类时,它说我需要为所有可能的子类添加 XmlInclude,但我无法添加 SpeedBoat,因为我不知道我将提前拥有多少类型,例如:

[XmlInclude(typeof(WindBoat)]
[XmlInclude(typeof(SpeedBoat<T>)] <-- Not acceptable
public class Boat
{
public string Brand { get; set; }
public string Model { get; set; }
}

有没有办法让序列化程序通过泛型?

谢谢。

最佳答案

您可以通过要求 T 是可序列化的来解决这个问题:

public class SpeedBoat<T> : Boat where T: IXmlSerializable
{
public int MaxSpeed { get; set; }
public Engine<T> Engine { get; set; }
}

关于c# - 类型为 T 的派生类的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25172223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com