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

6

我有一个名为UnitsManager的类。在这个类中有一个枚举:

public enum TimeUnit
{
    Seconds,
    Milliseconds,
    Minutes,
    Hours,
    Days,
    Months,
    Years
}

这个枚举类型用于另一个名为Process的类中。它有一个属性:

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

我正在尝试对Process类进行序列化和反序列化。我在Process类上实现了ISerializable接口。

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

        info.AddValue("CycleTime", CycleTime);
        info.AddValue("CycleTimeUnit", CycleTimeUnit);
    }

我的问题出现在反序列化过程中。

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

我如何将它转换为类型CycleTimeUnit

1个回答

6

试试这个:

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

差一点!CycleTimeUnit = (TimeUnit)info.GetValue("CycleTimeUnit", typeof(TimeUnit)); 解决了问题!谢谢你的帮助。 - cce1911
不用谢,我进行了编辑以便于未来给出正确的答案。 - Nikolaus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接