从 Serializationinfo 存储中反序列化枚举?

cce*_*911 6 c# enums serialization

我有一堂课叫UnitsManager. 这个类中有一个枚举:

public enum TimeUnit
{
    Seconds,
    Milliseconds,
    Minutes,
    Hours,
    Days,
    Months,
    Years
}
Run Code Online (Sandbox Code Playgroud)

该枚举在另一个名为 的类中使用Process。它有一个属性:

    private TimeUnit cycleTimeUnit = TimeUnit.Seconds; 
    [XmlAttribute("CycleTimeUnit")]
    public TimeUnit CycleTimeUnit
    {
        get { return this.cycleTimeUnit; }
        set { this.cycleTimeUnit = value; }
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试序列化和反序列化该类Process。我已经在Process类上实现了 ISerialized

    public override void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        base.GetObjectData(info, context);

        info.AddValue("CycleTime", CycleTime);
        info.AddValue("CycleTimeUnit", CycleTimeUnit);
    }
Run Code Online (Sandbox Code Playgroud)

我的问题出在反序列化上

    private Process(SerializationInfo info, StreamingContext context)
    {
        CycleTime = info.GetDouble("CycleTime");
        CycleTimeUnit = info.????("CycleTimeUnit"); // <--- ???
    }
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为类型CycleTimeUnit

Nik*_*aus 6

尝试这个:

private Process(SerializationInfo info, StreamingContext context)
{
    CycleTime = info.GetDouble("CycleTime");
    CycleTimeUnit = (TimeUnit) info.GetValue("CycleTimeUnit", typeof(TimeUnit)); 
}
Run Code Online (Sandbox Code Playgroud)